Php 加载类函数

Php 加载类函数,php,class,methods,autoload,Php,Class,Methods,Autoload,我正在尝试创建一个自动加载类的函数,所以我可以这样做: load_class('Db'); $db->query(); 这是到目前为止我的代码。它加载了文件并成功实例化了类,但是当我尝试调用上面这样的方法时,我得到了calltomemberfunctionerror 这是我的密码: function load_class($class) { $file = 'classes/' . $class . '.php'; if (file_exists($file)) {

我正在尝试创建一个自动加载类的函数,所以我可以这样做:

load_class('Db');
$db->query();
这是到目前为止我的代码。它加载了文件并成功实例化了类,但是当我尝试调用上面这样的方法时,我得到了
calltomemberfunction
error

这是我的密码:

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

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

        if (class_exists($class)) {
            $class = new $class();
            return $class;
        }
    }
}
我错过了什么


谢谢

要使代码正常工作,请这样做:

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

load\u class
返回
Db
类的实例,如果它找到了声明

您可能需要执行以下操作:

$db = load_class('Db');
if (!$db) {
  throw new Exception('Failed to load db!');
}
$db->query();
但是,如果您想在执行
$db=newdb时自动加载该类,然后您应该查看

例如:

function load_class($class) {
    $file = 'classes/' . $class . '.php';
    if (file_exists($file)) {
        include_once($file);
    }
}
spl_autoload_register('load_class');

这样做有什么好处。使用新的
有什么问题?或者如果你讨厌
new
用静态方法创建一个基类
create
,并使所有其他类都从中继承。谢谢你的回答,但如果我要这么做,我只需要使用
$db=new db
-我正在尝试创建一个动态执行的函数,比如CodeIgniter。“神奇的”像那样的事情太不对劲了<代码>加载类('Db')
为16个字符
$db=new db
是10-12个字符,所以你甚至不会写得更少…这个异常/错误处理需要在自动加载函数内部进行,对吗?