新写的类工厂函数,请指教

moliyishengyuan 2011-05-06 11:38:24

<?php
/**
* 中文名称 类创建工厂
*
* 功能描述 实例化类,支持类构造函数多参数功能
*
* @author 魔力一生缘 moliyishengyuan@126.com
* @package Lib
*/
class ClsFactory {
/**
* 创建类对象
*
* @param string $classInfo 类信息
* @param mixed $param1 类构造函数参数1,可选
* @param mixed $param2 类构造函数参数2,可选
* ……
*
* @return object | FALSE
*/
public static function create() {
// 从参数中获取类信息和类构造函数参数
$args = func_get_args();
if (count($args) <= 0) {
return FALSE;
}

// 类信息,此处类信息格式为model::Test,对应/model/Test.php文件中的Test类
$classInfo = array_shift($args);
$params = $args;

// 类创建函数实体
self::_createMain($classInfo, $params);
}

/**
* 创建类主体函数
*
* @param array $classInfo 类信息
* @param array $params 类构造函数参数
*
* @return object | FALSE
*/
private static function _createMain($classInfo, $params) {
$className = array_pop($classInfo);
$classPath = SERVER_ROOT . implode('/', $classInfo). '/' . $className . '.php';

if (!class_exists($className)) {
include_once $classPath;
}
if (!class_exists($className)) {
return FALSE;
}

// 通过反射创建类的映射
$ref = new ReflectionClass($className);
if ($ref->hasMethod('__construct') && !empty($params)) {
$obj = $ref->newInstanceArgs($params);
} else {
$obj = $ref->newInstance();
}

return $obj;
}
}
?>
...全文
186 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloyou0 2011-05-06
  • 打赏
  • 举报
回复
这个做什么用?看起来只是起了一个autoloader的作用?

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧