微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP:如何使用另一个类中的参数实例化一个类

我处于某种情况,我需要使用另一个类的实例中的参数实例化一个类.
这是原型:
//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'));

它给出错误
缺少参数1和2;只有第一个参数通过.

如果我实例化一个在它的构造函数中没有参数的类,这个工作正常.

对于经验丰富的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 举报,一经查实,本站将立刻删除。

相关推荐