我有个需求

比如下面

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工程模式如何传入参数相关推荐

  1. 工程模式和抽象工厂模式_功能工厂模式

    工程模式和抽象工厂模式 您是否需要一种非常快速的方法来制作Factory对象? 然后,您需要lambda或其他函数传递! 它不仅快速,而且非常简单. 我敢打赌,如果您对Lambdas相当满意,那么您只 ...

  2. 【设计模式】 - 创建者模式 - 工厂方法模式、抽象工程模式

    工厂方法模式.抽象工程模式 前言 工厂方法模式. 抽象工程模式 1. 简单工厂模式(不属于GOF的23种经典设计模式) 1.1 结构 1.2 实现 缺点 2. 工厂方法模式 2.1 结构 2.2 实现 ...

  3. 工厂方法模式、简单工厂模式、抽象工程模式

    1.概述 工厂设计模式是一种创建型模式,它提供了一种创建对象的最佳方式.在工厂模式中,我们创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象. 1.1. 针对的问题 在 ...

  4. 【设计模式】工厂方法模式 Factory Method Pattern

    在简单工厂模式中产品的创建统一在工厂类的静态工厂方法中创建,体现了面形对象的封装性,客户程序不需要知道产品产生的细节,也体现了面向对象的单一职责原则(SRP),这样在产品很少的情况下使用起来还是很方便 ...

  5. 一文彻底弄懂工厂模式(Factory)

    文章已收录我的仓库:Java学习笔记与免费书籍分享 模式类型 工厂模式属于创建者模式,与对象的创建有关,其中工厂方法模式用于类,而抽象工厂模式用于对象.创建型类模式将对象的部分创建工作延迟到子类,由子 ...

  6. 设计模式之工厂方法模式(Factory Method)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.FactoryMethod(工厂方法模式):2.Abstract Factory(抽象工厂模式):3.Sin ...

  7. 创建对象_工厂方法(Factory Method)模式 与 静态工厂方法

    工厂方法模式: 定义:为创建对象定义一个接口,让子类决定实例化哪个类.工厂方法让一个类的实例化延迟至子类. 应用场景: 客户类不关心使用哪个具体类,只关心该接口所提供的功能: 创建过程比较复杂,例如需 ...

  8. 09Abstract Factory(抽象工厂)模式

    技术交流QQ群:1027579432,欢迎你的加入! 1.Abstract Factory(抽象工厂)模式动机 在软件系统中,经常面临着一系列相互依赖的对象的创建工作.同时,由于需求的变化,往往存在更 ...

  9. 工厂方法(Factory Method)模式

    一.工厂方法(Factory Method)模式 工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟的子类中. 工厂方法模式是简单工厂 ...

最新文章

  1. 面试官问:MySQL 的自增 ID 用完了,怎么办?
  2. python socket学习
  3. python 动态规划 数塔_数塔问题,简单的动态规划算法
  4. Linux 下 Tomcat Https
  5. mpandroidchart 设置x轴数据_跟小白学Python数据分析——绘制条形图
  6. python连点封闭多边形_python实现根据给定坐标点生成多边形mask的例子
  7. 小D课堂 - 新版本微服务springcloud+Docker教程_6-06 zuul微服务网关集群搭建
  8. CCS8.0安装教程及安装包
  9. python中多态是什么意思_python类的多态是什么
  10. Python小白入门--(域名whois查询为例)
  11. 自己动手写邮件群发助手
  12. 伪装成mysql的备_如何伪装成一个服务端开发(六) -- 数据库操作
  13. 机器学习Machine Learning
  14. 1、 利用AUTO CAD脚本写一个插件,可以读取CAD中的图形公式,并输出为一个Excel计算表格...
  15. 面试上海启明星辰+渗透测试工程师! 通过
  16. MS-DOS系统的操作命令
  17. 如何转换为YOLO txt格式
  18. 多普达S900 使用详细说明(使用技巧大全)
  19. Reactor响应式流的核心机制——背压机制
  20. 基于多目标优化方法的电梯零部件预防性维修期决策

热门文章

  1. IOS15之Swift5.5的KVC报错以及JSON转字典转模型
  2. IOS之Swift5.x和OC网络请求JSON
  3. python引用传递产生的问题_python关于lambda、引用传递等易犯的错误
  4. r语言 回归分析 分类变量_R语言 | 回归分析(二)
  5. php 正则特殊字符转义,php 正则特殊字符转义的方法
  6. python return用法_Python 为什么没有 void 关键字?
  7. textview文本超出部分用省略号表示
  8. 线程池参数详解_java中常见的六种线程池详解
  9. 教你阿里云企业版服务器配置到底怎么选?阿里云ECS相关术语汇总
  10. CentOS 6.5通过ifconfig命令看不到网卡IP地址的解决方法