我有这个简单的自动加载脚本,唯一的问题是我不知道我的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();
答案 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方法......