0

我正在尝试创建一个将自动加载类的函数,因此我可以执行以下操作:

load_class('Db');
$db->query();

到目前为止,这是我的代码。它加载文件并成功实例化类,但是当我尝试调用上述方法时,Call to member function出现错误。

这是我的代码:

function load_class($class) {
    $file = 'classes/' . $class . '.php';

    if (file_exists($file)) {
        include_once($file);

        if (class_exists($class)) {
            $class = new $class();
            return $class;
        }
    }
}

我错过了什么?

谢谢!

4

2 回答 2

0

为了使您的代码正常工作,请这样做:

$db = load_class('Db');
$db->query();
于 2012-12-29T05:18:56.907 回答
0

load_classDb如果找到声明,则返回类的实例。

您可能需要这样做:

$db = load_class('Db');
if (!$db) {
  throw new Exception('Failed to load db!');
}
$db->query();

但是,如果你想在你这样做时自动加载类$db = new Db;,那么你应该看看php 的 autoload

例子:

function load_class($class) {
    $file = 'classes/' . $class . '.php';
    if (file_exists($file)) {
        include_once($file);
    }
}
spl_autoload_register('load_class');
于 2012-12-29T05:24:55.630 回答