本篇文章为大家展示了使用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怎么实现一个对象工厂类,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。