我处于某种情况,我需要使用另一个类的实例中的参数实例化一个类.
这是原型:
这是原型:
//test.PHP class test { function __construct($a,$b,$c) { echo $a . '<br />'; echo $b . '<br />'; echo $c . '<br />'; } }
现在,我需要使用下面的类cls函数来实例化上面的类:
class myclass { function cls($file_name,$args = array()) { include $file_name . ".PHP"; if (isset($args)) { // this is where the problem might be,i need to pass as many arguments as test class has. $class_instance = new $file_name($args); } else { $class_instance = new $file_name(); } return $class_instance; } }
现在,当我尝试创建测试类的实例,同时传递参数:
$myclass = new myclass; $test = $myclass->cls('test',array('a1','b2','c3'));
如果我实例化一个在它的构造函数中没有参数的类,这个工作正常.
对于经验丰富的PHP开发人员来说,以上不应该是很大的问题.请帮忙.
谢谢
你需要Reflection
http://php.net/manual/en/class.reflectionclass.php
if(count($args) == 0) $obj = new $className; else { $r = new ReflectionClass($className); $obj = $r->newInstanceArgs($args); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。