本文实例讲述了PHP对象工厂类。分享给大家供大家参考,具体如下:
rush: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程序设计有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。