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 条评论
登录 后参与评论

相关文章

来自专栏后端之路

基于SpringBoot的CodeGenerator

背景 目前组织上对于一个基础的crud的框架需求较多 因此选择了SpringBoot作为基础选型。 Spring Boot是由Pivotal团队提供的全新框架,...

1.7K11
来自专栏石奈子的Java之路

原 荐 SpringBoot 2.0 系列0

3443
来自专栏java、Spring、技术分享

Spring Import 三种用法与源码解读

  最近在看Spring Cloud相关的源码,每次引入一个新的starter,发现都会加一些enable的注解,比如:@EnableDiscoveryClie...

1883
来自专栏Hongten

apache的开源项目-模板引擎(Velocity)_学习了两天就上手啦_源码下载

首先,如果你对Velocity不是很了解,还是建议你去apache的官方网站上去走走....

1081
来自专栏后端之路

Spring的cache实现一

spring3.1之后引入了新的注解EnableTransactionManagement

2053
来自专栏一枝花算不算浪漫

SpringBoot自定义序列化的使用方式--WebMvcConfigurationSupport

1381
来自专栏后端之路

jsp改造之sitemesh注意事项

背景 现在各种现代化的浏览器确实惯坏了开发者 智能纠错 无论是忘记关闭标签甚至重复等等都有可能被chrome这些浏览器智能纠错===》chrome会合并多个bo...

2564
来自专栏Android相关

Android使用MultiDex发生ClassNotFoundException

在Method与Filed数超限的背景下,我们将多工程拆分成多个Dex打到Apk中解决该问题,但是在使用MultiDex的时候,还会遇到一些问题。 在启动的时...

1302
来自专栏流柯技术学院

CentOS升级Python2.7导致使用pip等命令安装模块失败

出现这个问题是因为:虽然已经把Python升级到了2.7版本,但是pip仍然是原来的版本,仍在原来python的site-package里面

1333
来自专栏JadePeng的技术博客

Netty断线重连

Netty断线重连 最近使用Netty开发一个中转服务,需要一直保持与Server端的连接,网络中断后需要可以自动重连,查询官网资料,实现方案很简单,核心思想是...

4285

扫码关注云+社区