如何检测用于初始化类的变量

时间:2012-10-16 06:04:24

标签: php

我有这个简单的自动加载脚本,唯一的问题是我不知道我的class1初始化了什么变量。我var_dump变量$ class,它说

object(class1)[1]

但是当我试图将$class->someMethod()变量类定义为未定义时?

在我的ClassLib目录上我有一个

-class1.php和    -class2.php

我的COED:

function init_load($class){ 
include 'ClassLib/'.$class.'.php'; 
}

function verify_fclass($class){
if(!file_exists('ClassLib/'.$class.'.php')){
    return FALSE;
}else{
    if(!class_exists($class)){
        return FALSE;
    }else{
        return TRUE;
    }
}

}

function init_classes($classes = array()){
foreach($classes as $class){
    if(verify_fclass($class) === FALSE){
        $test[$class.'NotExisting'] = $class;
    }else{
             $test = null;
             $class = new $class;
    }
}
var_dump($class); // what is on class
var_dump($test);  // what is on test
}

$class_array = array('NonExistingClass','class1');
spl_autoload_register('init_load');
init_classes($class_array);

$class->what();

1 个答案:

答案 0 :(得分:3)

您仍然需要在函数范围之外定义类实例$ class。

这意味着你应该在init_classes函数中返回$ class。我在这里看到的唯一问题是你希望能够一次实例化几个类,所以你可能必须返回一个类数组。

您可以尝试这样的事情:

function init_classes($classes = array()){
    $error = array();
    $instances = array();

    foreach($classes as $class){
        if(verify_fclass($class) === FALSE){
            $error[$class.'NotExisting'] = $class;
        }
        else{
            $test = null;
            $instances[$class] = new $class;
        }
    }
    return array( 'error' => $error, 'instances' => $instances);
}

$class_array = array('NonExistingClass','class1');
$class = $init['instances']['class1'];
$class->what();

但是你可以直接实例化该类而不使用数组和init_classes方法......