php对象工厂类完整示例
这篇文章主要介绍了php对象工厂类,涉及php参数获取、数组使用、对象创建等相关操作技巧,需要的朋友可以参考下
@H_301_0@本文实例讲述了PHP对象工厂类。分享给大家供大家参考,具体如下:
<div class="jb51code">
<pre class="brush: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;
}
}
@H_301_0@更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《》
@H_301_0@希望本文所述对大家PHP程序设计有所帮助。