依存性注入に spl_autoload を使用しています。
spl_autoload_register(function ($class)
{
$cFilePath = _CLASSLIB_ . "/class.$class.php";
if(file_exists($cFilePath))
{
include($cFilePath);
}
else
{
die("Unable to include the $class class.");
}
});
これはうまくいきます。ただし、これらが私のクラスだとしましょう:
class Test
{
public function foo()
{
echo "Here.";
}
}
と
class OtherTest
{
public function bar()
{
global $Test;
$Test->foo();
}
}
だから、私の実行コードでは:
<?php
$OT = new OtherTest(); //Dependency Injection works and loads the file.
$OT->bar();
?>
bar() がテスト クラス (インスタンス化されていないため、オートロードされない) でグローバル化を試みるため、エラーが発生します。
すべてのメソッドで使用する前に $Test グローバルがオブジェクトであるかどうかを確認する以外に、これを実装する最良の方法は何ですか?