クラス関数内で作成された変数を、そのクラス関数の外で使用できるようにするにはどうすればよいですか?
たとえば、私のメイン クラスのコンストラクターは、ログ クラスのインスタンスを作成します。この $log 変数を他のクラスで (global キーワードを使用して) 利用できるようにしたいと思います。
これは可能ですか?
クラス関数内で作成された変数を、そのクラス関数の外で使用できるようにするにはどうすればよいですか?
たとえば、私のメイン クラスのコンストラクターは、ログ クラスのインスタンスを作成します。この $log 変数を他のクラスで (global キーワードを使用して) 利用できるようにしたいと思います。
これは可能ですか?
静的を使用できます。
class Main
{
static private $log;
public function __construct()
{
self::$log = new Log();
}
static public function getLog()
{
return self::$log;
}
}
$log を使用してどこからでもアクセスできるようになりました
Main::getLog();
グローバルを使用すると、OOP の目的が無効になります。OOP は、依存を軽減し、モジュールで使用するためのコードの封じ込めを提供することを目的としています。
アプリケーションの設計に間違ったアプローチをしているだけで、ロギング インスタンスへのアクセスのしやすさを設計しています。あれは; ロギング クラスをインスタンス化し、それに依存する他のクラスが (設計により) アクセスできる場所にインスタンスを格納します。一種の「レジストリ」。