php对象工厂类完整示例


Posted in PHP onAugust 09, 2018

本文实例讲述了php对象工厂类。分享给大家供大家参考,具体如下:

<?php
/**
 * 对象工厂
 * @author flynetcn
 */
class ObjectFactory
{
  private static $objSet = array();
  /**
   * 清空工厂中的对象
   */
  public function clear()
  {
    self::$objSet = array();
  }
  /**
   * 在工厂中创建对象并将其返回
   * 参数格式:$class_name, $class_param1, $class_param2, ...
   */
  public static function create()
  {
    $argc = func_num_args();
    if ($argc <= 0) {
      throw new Exception('params error', 1);
    }
    $args = func_get_args();
    $class_name = array_shift($args);
    $params = $args;
    if (!$params) {
      $class_sign = $class_name;
    } else {
      $param_sign = serialize($params);
      if (strlen($param_sign) > 100) {
        $param_sign = md5($param_sign);
      }
      $class_sign = $class_name.'@'.$param_sign;
    }
    if (isset(self::$objSet[$class_sign])) {
      return self::$objSet[$class_sign];
    }
    $ref = new ReflectionClass($class_name);
    if ($ref->hasMethod('__construct') && !empty($params)) {
      $obj = $ref->newInstanceArgs($params);
    } else {
      $obj = $ref->newInstance();
    }
    self::$objSet[$class_sign] = $obj;
    return $obj;
  }
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
类的另类用法--数据的封装
Oct 09 PHP
随机广告显示(PHP函数)
Oct 09 PHP
第二节--PHP5 的对象模型
Nov 16 PHP
PHP日期时间函数的高级应用技巧
May 16 PHP
php header示例代码(推荐)
Sep 08 PHP
一致性哈希算法以及其PHP实现详细解析
Aug 24 PHP
PHP Hash算法:Times33算法代码实例
May 13 PHP
PHP5.2中PDO的简单使用方法
Mar 25 PHP
PHP在线调试执行的实现方法(附demo源码)
Apr 28 PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 PHP
php文件上传原理与实现方法详解
Dec 20 PHP
基于PHP+mysql实现新闻发布系统的开发
Aug 06 PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 #PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 #PHP
PHP命令Command模式用法实例分析
Aug 08 #PHP
PHP耦合设计模式实例分析
Aug 08 #PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 #PHP
php实现往pdf中加数字签名操作示例【附源码下载】
Aug 07 #PHP
php使用环形链表解决约瑟夫问题完整示例
Aug 07 #PHP
You might like
一个很不错的PHP翻页类
2009/06/01 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
jQuery chili图片远处放大插件
2009/11/30 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
onkeypress字符按键兼容所有浏览器使用介绍
2013/04/24 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
javascript快速排序算法详解
2014/09/17 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
jQuery数组处理函数整理
2016/08/03 Javascript
JS实现图片剪裁并预览效果
2016/08/12 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
python pytest进阶之xunit fixture详解
2019/06/27 Python
Python内置类型性能分析过程实例
2020/01/29 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
全球在线商店:BerryLook
2019/04/14 全球购物
税务专业毕业生自荐信
2013/11/10 职场文书
大课间体育活动方案
2014/03/12 职场文书
医德医风自我评价
2014/09/19 职场文书
工厂仓库管理员岗位职责
2015/04/09 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
nginx lua 操作 mysql
2022/05/15 Servers