簡単な質問ですが、これが本当に可能かどうかはわかりません。
例:
クラステストには、次のようなspl_autoload_registerがあります。
function __construct() {
spl_autoload_register(function ($class) {
echo "{$this->projectroot}/include/{$class}.php";
require_once(strtolower("{$this->projectroot}/classes/{$class}.php"));
});
}
$ projectrootは、プロジェクトのディレクトリへのパスを持つオブジェクトスコープ変数です。
プロジェクトにクラステストを含め、そこから新しいインスタンスを作成します。
$test = new test();
ここで、次を作成するときに、$testが関数を含むクラスファイルをロードするようにします。
$test2 = new test2();
ここで、test2は、test2と呼ばれる/include/test2.php内のクラスです。
これを実行しようとすると、次のようなエラーが発生します。
Fatal error: Using $this when not in object context in
しかし、私が試してみると:
$test2 = new $test1->test2();
test1のspl_autoload_register関数を完全に無視します:/明らかにtest2が既知のメソッド(未定義のプロパティ)ではないことを示すだけです。
メインプロジェクトでさらに定義せずに、プロジェクトのクラステストでspl_autoload_register関数を使用する方法はありますか?
編集
グローバル変数を使用して「修正」しましたが、OOPメソッドがあるかどうか知りたいですか?(これが実用的/ベストプラクティスのOOP使用であるというわけではありません...)ただ好奇心が強いです。