【发布时间】:2013-10-16 01:50:51
【问题描述】:
如何在 PHP 中用一组参数实例化一个类?
通常会是call_user_func_array,但我需要实例化一个类。
【问题讨论】:
标签: php arrays class command-line-arguments
如何在 PHP 中用一组参数实例化一个类?
通常会是call_user_func_array,但我需要实例化一个类。
【问题讨论】:
标签: php arrays class command-line-arguments
根据call_user_func_array() 上的 PHP 手册,您仍然可以将它与对象一起使用。
我不确定你是如何使用这些参数的,所以我只举一个简单的例子(有点)。
<?php
class foo
{
public function concat()
{
$args = func_get_args();
$output = '';
if( count( $args ) > 0 )
{
foreach( $args as $value )
{
$output .= $value;
}
}
echo $output;
}
}
$class = new foo();
// Should Echo "Hello"
call_user_func_array( array( $class, "concat" ), array( "H", "e", "l", "l", "o" ) );
如果我遗漏了您未提及的任何要求,请告诉我。您应该举例说明您要实现的目标(输入/输出、调用的函数等)。
【讨论】:
您可以使用the reflection api 尤其是ReflectionClass::newInstanceArgs():
$class_name = 'fooBar';
$class_args = array('foo', 'bar');
$reflected_class = new ReflectionClass($class_name);
$class_instance = $reflected_class->newInstanceArgs($class_args);
【讨论】: