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

load_classDb宣言が見つかった場合は、クラスのインスタンスを返します。

あなたがする必要があるかもしれません:

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

ただし、クラスを自動ロードしたい場合は、 php の autoload$db = new Db;を確認する必要があります。

例:

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 に答える
0

コードを機能させるには、次のようにします。

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