class CI_Base { private static $instance; public function CI_Base() { self::$instance =& $this; } public static function &get_instance() { return self::$instance; }}function &get_instance(){ return CI_Base::get_instance();}
self::$instance =& $this;
クラス全体の意味を教えてください
4 つの異なる書き方!
それについて議論する必要はありません
このように書かれた CI フレームワークのオープンソースの事例を見たことがあります
それなら、コードを手放しましょう!
クラス名をクラスのコンストラクタとして使用するのがphp4での書き方です。現在 php5 でサポートされていますが、php5 のオブジェクトはすべて参照として渡されるため、特定の状況ではエラーが報告されます。コードはシングルトン パターンを適用することを目的としています
が、シングルトン パターンのルールに準拠していません
本来、CI_Base::get_instance(); は CI_Base クラスのインスタンスを返すはずですが、複数の実行では同じインスタンスが返されます
コードは最初に新しい CI_Base を作成してから CI_Base::get_instance( ) が有効になる必要があります
では、新しい CI_Base が再度使用された場合に競合は発生しないでしょうか?
そのようなコードはあなたを迷わせるだけです
それならコードを手放してください!
クラス名をクラスのコンストラクタとして使用するのがphp4での書き方です。現在 php5 でサポートされていますが、php5 のオブジェクトはすべて参照として渡されるため、特定の状況ではエラーが報告されます。コードはシングルトン パターンを適用することを目的としています
本来、CI_Base::get_instance(); は CI_Base クラスのインスタンスを返すはずですが、複数の実行では同じインスタンスが返されます
コードは最初に新しい CI_Base を作成してから CI_Base::get_instance( ) が有効になる必要があります
では、新しい CI_Base が再度使用された場合に競合は発生しないでしょうか?
そのようなコードはあなたを迷わせるだけです
投稿に対してポイントが与えられることを理解しました。