因为刚学PHP,临时做一个东西,没有时间看书。请大家帮忙指点迷津。网上找了一些资料,但是有一个疑问。想写一个Factory,所有的类统一由它创建。约定优于配置,但是构造函数的参数是数组。$class_param是构造函数的参数数组。
这样不行:call_user_func_array(array('A','__construct'),$class_param);
说什么只能调用静态方法。
public static function getInstance($class_name,$class_type,$class_param=null){
$upper = strtoupper($class_type);
switch ($upper){
case 'ACTION':
$class_name = $class_name.'Action';
$paramstr = '999,888,6666';
$myclass = new $class_name($paramstr); // 这样也不行啊! 参数当字符串了。--------------------------------------------
另外我这样做是不是很不好? 有没有更科学的方法啊?
if(class_exists( $class_name)){
$class_action = new $class_name($url_model,$url_action,$url_fun); // 构造函数参数
}$class_name: url 给我传递一个什么File之类的东东,那我不是完蛋啦? 请教高手如何安全地创建类,并且可以动态的将构造函数数组传递进去。 非常感谢。
这样不行:call_user_func_array(array('A','__construct'),$class_param);
说什么只能调用静态方法。
public static function getInstance($class_name,$class_type,$class_param=null){
$upper = strtoupper($class_type);
switch ($upper){
case 'ACTION':
$class_name = $class_name.'Action';
$paramstr = '999,888,6666';
$myclass = new $class_name($paramstr); // 这样也不行啊! 参数当字符串了。--------------------------------------------
另外我这样做是不是很不好? 有没有更科学的方法啊?
if(class_exists( $class_name)){
$class_action = new $class_name($url_model,$url_action,$url_fun); // 构造函数参数
}$class_name: url 给我传递一个什么File之类的东东,那我不是完蛋啦? 请教高手如何安全地创建类,并且可以动态的将构造函数数组传递进去。 非常感谢。
function __construct($a, $b) {
$this->x1 = $a;
$this->x2 = $b;
}
}
$ref = new ReflectionClass('A');
$p = $ref->newInstanceArgs(array(1, 2));
print_r($p);A Object
(
[x1] => 1
[x2] => 2
)
看见Reflection.class 就感觉和JAVA差不多了。