PHPが派生クラスオブジェクトを作成するときの基本クラスの問題の一部

派生クラスのコンストラクターを呼び出すときに、基本クラスオブジェクトがまだ構築されておらず、メンバーが存在しないため、基本クラスのコンストラクターが呼び出される前に基本クラスのメンバーを使用できないと思っていましたが、次のテストで、基本クラスのコンストラクターを呼び出す前に、基本クラスのメンバーが既に存在し、基本クラスのコンストラクターが基本クラスのメンバーの値を変更するだけであることがわかりました。

class base {
    
    
    public $i = 4;
    
    public function func() {
    
    
        print("in base's func" . PHP_EOL);
    }
    
    public function __construct() {
    
    
        print("in base's construct" . PHP_EOL);
        $this->i = 3;
    }
}

class derive extends base {
    
    
    public function __construct() {
    
    
        print("start derive's constructor" . PHP_EOL);
        self::func();
        print("before base's construct: \$i = $this->i" . PHP_EOL);
        parent::__construct();
        print("after base's construct: \$i = $this->i" . PHP_EOL);
    }
}

$deriveObj = new derive();

上記のコードを
ここに画像の説明を挿入
実行します。基本クラスのコンストラクターを実行する前に、基本クラスのメンバー関数とデータメンバーを呼び出すことができることがわかります。

おすすめ

転載: blog.csdn.net/tus00000/article/details/115123352