私が取り組んでいるフレームワークプロジェクトの "スーパーオブジェクト"(CodeIgniterのものに似ています)を作成する際に問題があります。スーパーオブジェクトの可変スコープの問題
他のすべてのクラスが実行されるスーパーオブジェクトを作成したいと思います。私はそれをしましたが、すべての関数でglobalキーワードを使用せずに、各クラスでスーパーオブジェクトのオブジェクトを使用できないようです。
私はこのようなものがあります:
class a
{
function aa()
{
return 'class a';
}
}
class b
{
function bb()
{
$blah->a->aa();
}
}
class superobj
{
function loadClass($class)
{
$this->$class = new $class;
}
}
class blah extends superobj
{
function __construct()
{
$this->loadClass('a');
$this->loadClass('b');
}
}
$blah = new $blah;
をだから私はこれを実行する場合、私はAAメソッドにアクセスすることはできませんので、私はエラーを取得します。メソッドbbにグローバル$ blahを置くと、それは動作します(または、少なくとも私の実際のプロジェクトでは、この5秒目のモックアップについては気にしません)。
$ blahオブジェクトをグローバルにして、すべてのメソッドで参照する必要がないようにする方法がありますか、それとも私がしようとしていることを達成するためのよりよい方法はありますか?私はOOPで非常によくないよ
...
可能な複製:http://stackoverflow.com/questions/1234445/php-global-variables – thomaspaulb