在PHP中使用ReflectionClass,如何在构造函数中使用传递的参数?

时间:2014-09-11 13:02:36

标签: php class reflection

所以我有一个我想用动态数量的参数创建的类(它可以使用的其他类)。这是动态的,因为该网站是相当动态的,如果我添加一个新的类/插件,我希望我的主类能够使用它。

这是我创建课程的代码:

$my_class = 'pages';
$my_parameters = array($class_mysql, $class_functions, $class_forms2);
$my_parameters = array_merge($my_parameters, $extra_classes);

$reflection = new ReflectionClass($my_class);
$class_pages = $reflection->newInstanceArgs($my_parameters);

$extra_classes是一个数组,它是使用我希望我的网页类能够使用的所有活动插件的类实例创建的。

这一切都运转正常,但我现在不知道如何在类文件中做什么。这是我原来的:

class pages {

    protected $class_mysql = null;
    protected $class_functions = null;
    protected $class_forms2 = null;

    public function __construct($mysql_instance, $functions_instance,
    $forms2_instance) {

        $this->class_mysql = $mysql_instance;
        $this->class_functions = $functions_instance;
        $this->class_forms2 = $forms2_instance;

    }

}

如何将传递的动态参数用于此?我一直在寻找但却无法找到对我有意义的事情。甚至ReflectionClass上的PHP页面也停止创建类的实例,并且没有在类本身中使用参数的示例。我这样做了吗?

1 个答案:

答案 0 :(得分:0)

好的,我不确定我是否可以回答我自己的问题...但是这是我在谷歌上搜索了大约一个小时并且绊到func_get_args()

之后想出来的
class pages {

    protected $classes = array();

    public function __construct() {
        if (func_num_args() > 0) {
            $args = func_get_args();
            foreach ($args as $key => $value) {
                $this->classes[get_class($value)] = $value;
            }
        }
    }

}

这就是我需要做的。我现在可以查看$classes以查看可供pages使用的类,并可以使用$this->classes['classname']来使用这些类。

我不知道这是否是正确的做法,所以如果有人知道请评论。谢谢!