我正在尝试创建一个自动加载类的函数,所以我可以这样做:
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;
}
}
}
我错过了什么?
谢谢!
答案 0 :(得分:0)
要使代码正常工作,请执行以下操作:
$db = load_class('Db');
$db->query();
答案 1 :(得分:0)
load_class
返回Db
类的实例,如果它找到了声明。
您可能需要这样做:
$db = load_class('Db');
if (!$db) {
throw new Exception('Failed to load db!');
}
$db->query();
但是,如果您想在执行$db = new Db;
时自动加载课程,那么您应该查看 php's autoload 。< / p>
示例:
function load_class($class) {
$file = 'classes/' . $class . '.php';
if (file_exists($file)) {
include_once($file);
}
}
spl_autoload_register('load_class');