我编写了自己的PHP自动类加载器但是当我尝试将类函数与类一起使用时,我收到以下错误
致命错误:在非对象上调用成员函数Test()
我还想知道这种方法是否是最好的方法,如果有人建议更好的编码方式,那么我会很感激。
$class = array();
foreach (scandir(include_dir) as $filename)
{
if (is_file(include_dir . '/' . $filename))
{
//its a php file, lets do this!
if (substr($filename, -4) == '.php')
{
$page = preg_replace('/\.php$/','',$filename);
$class[$page] = GetClass($page);
}
}
}
$class['Blue']->Test2();
$class['Blue2']->Test();
Iat似乎只有在文件名/类
中有数字时才会出现此错误这里是类加载器文件,我在我的索引中包含了Blue类,但Blue2没有并且抛出该错误。
function GetClass($class)
{
if (CheckAllOkay($class))
{
include('/blue/' . $class . '.php');
if (ClassCanBeAutoLoaded($class))
{
$newclass = new $class;
return $newclass;
}
}
}
function ClassCanBeAutoLoaded($class)
{
return class_exists($class);
}
function CheckAllOkay($class)
{
return file_exists($class);
}
这是Blue2课程
<?php
class Blue2
{
function __construct()
{
echo '[LOADED]';
}
public function Test()
{
echo '[TEST CALLED]';
}
}
?>
Class Blue是相同的只是回声一个不同的文本,并有一个不同的类名