PHP autoclass加载器

时间:2014-08-15 18:03:55

标签: php

我编写了自己的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是相同的只是回声一个不同的文本,并有一个不同的类名

0 个答案:

没有答案