因此,我有一个要创建的类,它具有动态数量的参数(它可以使用的其他类)。这是动态的,因为站点是相当动态的,如果我添加了一个新的类/插件,我希望我的主类能够使用它。
这是我用来创建类的代码:
$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是一个数组,它是用我希望我的pages类能够使用的所有活动插件的类实例创建的。
这一切都很好,但我现在不知道在类文件中做什么。这是我最初的想法:
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页面也仅限于创建类的实例,并且没有在类本身中使用参数的示例。我这样做对吗?
发布于 2014-09-11 23:00:06
好吧,我不确定我是否被允许回答我自己的问题...但这是我在谷歌上搜索了大约一个小时并偶然发现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']来使用这些类。
我不知道这是否是正确的方式,所以如果有人知道,请评论。谢谢!
https://stackoverflow.com/questions/25788195
复制相似问题