0

質問1

CodeIgniter で...私はいくつかの奇妙なものを見てきました...例:

親::__Construct(); 拡張クラスの構成にロードするために渡されるパラメーターはありません。

古いバージョンの PHP のものに違いないと思いました...上記が何をするのかよくわかりません...拡張クラスの構造に何かを渡した場合にのみ値が表示されます。

class Sausage
{
    private $name;
    function __Construct( $something )
    {
        $this->name = $something;
    }
}

class Something extends Sausage
{
    parent::__Construct( "Hi" ); 
    echo $this->name; // outputs "Hi"
}

Codeigniter では、parent::_Construct に何も渡しません。そのため、それがどのような目的を果たすのかわかりません :S

質問2

第二に、地球上でこれが意味することは次のとおりです。

self::$instance =& $this;

Code Igniter からの次のスニペット:

class CI_Controller {

 private static $instance;

 public function __construct()
 {
  self::$instance =& $this;

$instance 変数を $this の参照と等しくしますか?? $this は、静的コンテキストでは何も考慮しませんか? よくわかりません。

あなたの助けに感謝します。ここで私を完全に夢中にさせます。

4

3 に答える 3

0

次のコード

parent::__Construct();

現在のクラスの派生元である親クラスのコンストラクター メソッドを呼び出します。パラメーターが渡されないため、何も受け入れられず、親クラスからサブクラスを拡張する場合はconstructor明示的に呼び出す必要があるため、呼び出すことが重要です。 、コンストラクターは呼び出されません。

次のコード (ターゲット バージョン 4)

self::$instance = & $this;

は静的プロパティであるため、$instanceそれにアクセスするために使用self::$instance& $this、クラス インスタンスを参照として割り当てていました。

このコードprivate static $instance;では、プロパティは静的として宣言されており、クラスを 2 回目に呼び出した後でもその状態が保持されます。つまり、クラスの参照が含まれている場合は、再度割り当てられないため、常に取得されますクラスのインスタンスは 1 つだけでありsingleton、アンチパターンとして知られるデザイン パターンとして知られていますが、推奨されません。

于 2013-11-01T16:22:40.847 に答える