2

オートローダーとしてインスタンス化されたオブジェクトを使用するためにspl_autoload_registerを使用しようとしています。出来ますか?私は、人々がクラス静的関数をオートローダーとして使用しているが、オブジェクトは使用していない場所をいくつか見ました。

例:

class loadFile{
    function loadObject($object){
    //load object here
    }
}
$loadmefiles = new loadFile();
//use $loadmefiles->loadObject() as autoloader
spl_autoload_register();
$goat = new Animal('goat');

うまくいけば、あなたは私が何をしているのか理解しているでしょう。

4

2 に答える 2

10

これは、配列をに渡すことによって行われspl_autoload_registerます。最初の要素はオブジェクトであり、2番目の要素は文字列としてのメソッドの名前です。

spl_autoload_register(array($loadmefiles, 'loadObject'));

呼び出し可能なドキュメントから:

インスタンス化されたオブジェクトのメソッドは、インデックス0のオブジェクトとインデックス1のメソッド名を含む配列として渡されます。

于 2012-12-13T03:50:10.920 に答える
0

別の方法として静的にすることができます。

spl_autoload_register(function($class)
{
    Pi_loader::autoload($class);
});

そうでない場合...

spl_autoload_register(function($class)
{
    $loader = new Pi_loader();
    $loader->autoload($class);
});
于 2019-10-17T11:40:53.890 に答える