2

別のフォルダーにあるクラスを自動ロードしようとしています。それは可能ですか?

       function __autoload($class){
            require $class.'.php';
            require 'libs/'.$class.'.php';
            //this won't work.
        }

libs フォルダーまたはルートにあるクラスを自動ロードしたいと考えています。何かご意見は?どうもありがとう。

4

1 に答える 1

3

spl_autoload_registerまず、これを行うのに優れているを調べることをお勧めします。

次に、 を使用is_fileしてファイルが存在するかどうかをテストしてから、ロードしてみてください。requireファイルが存在しない場合、スクリプトは停止します。

spl_autoload_register(function($class) {
    if (is_file($class . '.php')) {
        require $class . '.php';
    } elseif (is_file('libs/' . $class . '.php')) {
        require 'libs/' . $class . '.php';
    }
});

ファイルが存在する可能性のあるフォルダーが複数ある場合は、次のようにすることができます。

spl_autoload_register(function($class) {
    $folders = array ('.', 'libs', 'somewhere');

    foreach ($folders as $folder) {
        if (is_file($folder . '/' . $class . '.php')) {
            require $folder . '/' . $class . '.php';
        }
        if (class_exists($class)) break;
    }
});
于 2012-05-23T00:34:45.257 に答える