php利用反射优雅的实现工厂

php的反射机制可以带参构造对象,利用这个特性可以很方便的实现工厂:

function factory($class, $args){
  if(class_exists($class)){
    return (new \ReflectionClass($class))->newInstanceArgs($args);
  }
}

$db = array(
  'PDO',
  array(
   'mysql:dbname=test;host=localhost',
   'root',
   'root',
   array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC)
  )
);

var_dump(factory($db[0], $db[1])->query('show tables')->fetchAll());

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

Hibernate_day01总结

? 第1章 Hibernate_day01总结 今日内容 Hibernate框架的概述 Hibernate的快速入门 Hibernate核心API的介绍 Hi...

3339
来自专栏Jerry的SAP技术分享

你真的会用ABAP, Java和JavaScript里的constructor么?

如果constructor里调用了一个成员方法,这个方法被子类override了,当初始化一个子类实例时,父类的构造函数被的调用,此时父类构造函数的上下文里调用...

3497
来自专栏菩提树下的杨过

无限级分类(非递归算法/存储过程版/GUID主键)完整数据库示例_(4)显示记录

显示记录,其实再简单不过了,一条sql语句即可 Select * From T_Class order By F_RootID,F_Orders 下面给出一个A...

17910
来自专栏Hongten

java开发_mysql中获取数据库表描述_源码下载

我们需要获取表:test_table表的描述信息,然后把描述信息插入到表:data_element_config中记录结果

912
来自专栏个人分享

Spark RDDRelation

注意 这里声明的是 sqlContext = new SQLContext(sc)  如果要存成hive 表 需用hivecontext.

521
来自专栏xiaoheike

hibernate persist update 方法没有正常工作(不保存数据,不更新数据)

在工程中通过spring aop的方式配置事务,使用hibernate做持久化。在代码实现中使用hibernate persit()方法插入数据到数据库,使用h...

691
来自专栏码匠的流水账

聊聊spring cloud gateway的SecureHeadersGatewayFilter

本文主要研究下spring cloud gateway的SecureHeadersGatewayFilter

762
来自专栏Kevin-ZhangCG

[ SSH框架 ] Hibernate框架学习之四(JPA操作)

1947
来自专栏程序员的SOD蜜

使用PDF.NET数据开发框架的实体操作语言OQL构造复杂查询条件

PDF.NET数据开发框架(Pwmis Data develop Framework,http://www.pwmis.com/sqlmap) 是一套借鉴iBa...

2165
来自专栏HansBug's Lab

3856: Monster

3856: Monster Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 351  Solved: 161 [S...

2578

扫码关注云+社区