PHP动态类加载
发布时间:2020-12-13 14:10:05 所属栏目:PHP教程 来源:网络整理
导读:让我们说我有一个数组,我想转换成一个值对象. 我的值对象类如下: /* file UserVO.php*/ class UserVO { public $id; public $email; public function __construct($data) { $this-id = (int)$data['id']; $this-email = $data['email']; } } 我创建了我的数
让我们说我有一个数组,我想转换成一个值对象.
我的值对象类如下: /* file UserVO.php*/ class UserVO { public $id; public $email; public function __construct($data) { $this->id = (int)$data['id']; $this->email = $data['email']; } } 我创建了我的数组对象,如下所示: /* file UserService.php*/ $array = array( array(...),array(...)); $count = count($array); for ($i = 0; $i < $count; $i++) { $result[] = new UserVO($array[$i]); } return $result; 好的,所以这一切都很好.但是,我想详细说明要动态创建的VO,以便我可以有一个动态函数来创建我的VO. 就像是: $ret = create_vo($array,'UserVO'); function create_vo($data,$vo) { $count = count($data); for ($i = 0; $i < $count; $i++) { $result[] = new $vo($data[$i]); //this obviously wont work...Class name must be a valid object or a string } return $result; } 我意识到我可以用switch语句(迭代所有我的VO)…但是毫无疑问是一个更优雅的解决方案.如果我可以根据需要懒惰加载VO,那么它也将是过冷的,而不是拥有多个“包含” 任何帮助非常感谢. $result[] = new $vo($data[$i]); //this obviously wont work...Class name must be a valid object or a string 你试了吗?它的工作原理就像预期的那样(在php 5.1中,我不知道如何在PHP 4中使用OOP,但是如果你使用__construct作为构造函数,那么这个工作). 避免多个包含在使用任何类之前定义魔术函数__autoload function __autoload($className) { require_once 'myclasses/'.$className.'.php'; } 所以首先调用新的UserVo将触发此函数以包含文件myclasses / UserVo.php. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |