このメソッドを使用してクラスをロードしています:
spl_autoload_register(function($class) {
require_once 'classes/' . $class . '.php';
});
その機能について、私が理解するのに苦労していることがまだいくつかあります。
私が理解しているように、オブジェクト インスタンスを作成するたびに、関数がトリガーされ、オブジェクトのクラスが読み込まれます。
だから、もし私が次のようなことをしたとしたら:
$myObj = new myObj();
関数はこの宣言をキャッチし、require_once 'classes/myObj.php'
.
別のインスタンスを作成するとどうなりますか? 例えば:
$myObj1 = new myObj();
$myObj2 = new myObj();
関数を2回トリガーしますか?それとも同じクラスであることに気づいているので、それを2回宣言しませんか?いずれにせよ、それが私が使用した理由なrequire_once
ので、過負荷にならないようにします。それでも、それが実際に何をするのか知りたいです。
もう1つ、なぜ私はこのようなコードをやっているのですか:
echo someOtherClass::getDesc();
関数はこれをクラス宣言として認識し、ファイルを必要としますclasses/someOtherClass.php
。なぜそれが起こっているのですか?私は新しいオブジェクトを宣言していません。実際、someOtherClass のインスタンスであるオブジェクトはありません。オブジェクト関数を使用しているときはいつでも、クラスをインクルードしようとするということですか? またはいつでも静的関数を使用できますか?
前もって感謝します!