php工程模式,factory - PHP工程模式如何传入参数
我有个需求
比如下面
function Factory($classname) {
return new $classname();
}
$tiger = Factory("Tiger");
但如果我Tiger类构造方法有参数的话,如何通过工厂来传参呢?
要适应所有类:
不用构造方法有不同的参数个数, 直接在构造方法后面加上参数貌似行不通,
并且我也不希望通过传array的办法来解决。
回复内容:
我有个需求
比如下面
function Factory($classname) {
return new $classname();
}
$tiger = Factory("Tiger");
但如果我Tiger类构造方法有参数的话,如何通过工厂来传参呢?
要适应所有类:
不用构造方法有不同的参数个数, 直接在构造方法后面加上参数貌似行不通,
并且我也不希望通过传array的办法来解决。
反射一下
class test{
function __construct($config = ''){
if(!empty($config)){
var_dump($config);
}else{
echo 'no params';
}
}
}
function Factory($classname, $params='') {
if(!empty($params) ){
$reflect = new ReflectionClass($classname);
return $reflect->newInstanceArgs($params);
}else{
return new $classname();
}
}
$config_test = array('a','b','c');
Factory('test');
Factory('test', $config_test);
参考:
http://www.php.net/manual/zh/class.reflectionclass.php
http://www.600mhz.net/php/php_runtime_instance_class_and_pass_parameters.html/comment-page-1
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php工程模式,factory - PHP工程模式如何传入参数相关推荐
- 工程模式和抽象工厂模式_功能工厂模式
工程模式和抽象工厂模式 您是否需要一种非常快速的方法来制作Factory对象? 然后,您需要lambda或其他函数传递! 它不仅快速,而且非常简单. 我敢打赌,如果您对Lambdas相当满意,那么您只 ...
- 【设计模式】 - 创建者模式 - 工厂方法模式、抽象工程模式
工厂方法模式.抽象工程模式 前言 工厂方法模式. 抽象工程模式 1. 简单工厂模式(不属于GOF的23种经典设计模式) 1.1 结构 1.2 实现 缺点 2. 工厂方法模式 2.1 结构 2.2 实现 ...
- 工厂方法模式、简单工厂模式、抽象工程模式
1.概述 工厂设计模式是一种创建型模式,它提供了一种创建对象的最佳方式.在工厂模式中,我们创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象. 1.1. 针对的问题 在 ...
- 【设计模式】工厂方法模式 Factory Method Pattern
在简单工厂模式中产品的创建统一在工厂类的静态工厂方法中创建,体现了面形对象的封装性,客户程序不需要知道产品产生的细节,也体现了面向对象的单一职责原则(SRP),这样在产品很少的情况下使用起来还是很方便 ...
- 一文彻底弄懂工厂模式(Factory)
文章已收录我的仓库:Java学习笔记与免费书籍分享 模式类型 工厂模式属于创建者模式,与对象的创建有关,其中工厂方法模式用于类,而抽象工厂模式用于对象.创建型类模式将对象的部分创建工作延迟到子类,由子 ...
- 设计模式之工厂方法模式(Factory Method)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.FactoryMethod(工厂方法模式):2.Abstract Factory(抽象工厂模式):3.Sin ...
- 创建对象_工厂方法(Factory Method)模式 与 静态工厂方法
工厂方法模式: 定义:为创建对象定义一个接口,让子类决定实例化哪个类.工厂方法让一个类的实例化延迟至子类. 应用场景: 客户类不关心使用哪个具体类,只关心该接口所提供的功能: 创建过程比较复杂,例如需 ...
- 09Abstract Factory(抽象工厂)模式
技术交流QQ群:1027579432,欢迎你的加入! 1.Abstract Factory(抽象工厂)模式动机 在软件系统中,经常面临着一系列相互依赖的对象的创建工作.同时,由于需求的变化,往往存在更 ...
- 工厂方法(Factory Method)模式
一.工厂方法(Factory Method)模式 工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟的子类中. 工厂方法模式是简单工厂 ...
最新文章
- 面试官问:MySQL 的自增 ID 用完了,怎么办?
- python socket学习
- python 动态规划 数塔_数塔问题,简单的动态规划算法
- Linux 下 Tomcat Https
- mpandroidchart 设置x轴数据_跟小白学Python数据分析——绘制条形图
- python连点封闭多边形_python实现根据给定坐标点生成多边形mask的例子
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-06 zuul微服务网关集群搭建
- CCS8.0安装教程及安装包
- python中多态是什么意思_python类的多态是什么
- Python小白入门--(域名whois查询为例)
- 自己动手写邮件群发助手
- 伪装成mysql的备_如何伪装成一个服务端开发(六) -- 数据库操作
- 机器学习Machine Learning
- 1、	利用AUTO CAD脚本写一个插件,可以读取CAD中的图形公式,并输出为一个Excel计算表格...
- 面试上海启明星辰+渗透测试工程师! 通过
- MS-DOS系统的操作命令
- 如何转换为YOLO txt格式
- 多普达S900 使用详细说明(使用技巧大全)
- Reactor响应式流的核心机制——背压机制
- 基于多目标优化方法的电梯零部件预防性维修期决策
热门文章
- IOS15之Swift5.5的KVC报错以及JSON转字典转模型
- IOS之Swift5.x和OC网络请求JSON
- python引用传递产生的问题_python关于lambda、引用传递等易犯的错误
- r语言 回归分析 分类变量_R语言 | 回归分析(二)
- php 正则特殊字符转义,php 正则特殊字符转义的方法
- python return用法_Python 为什么没有 void 关键字?
- textview文本超出部分用省略号表示
- 线程池参数详解_java中常见的六种线程池详解
- 教你阿里云企业版服务器配置到底怎么选?阿里云ECS相关术语汇总
- CentOS 6.5通过ifconfig命令看不到网卡IP地址的解决方法