Türetilmiş bir sınıf örneği zaman soyut sınıf kurucular örtük aramadı mı?

2 Cevap php

Bu örneği ele alalım:

abstract class Base {
    function __construct() {
        echo 'Base __construct<br/>';
    }
}

class Child extends Base {
    function __construct() {
        echo 'Çocuk __ construct<br/>';
    }
}

$c = new Child();   

Bir C # arka plandan geliyor, ben çıkış olmasını bekliyoruz

Baz __
Çocuk inşa __ inşa

Ancak, gerçek çıkış sadece bir

Çocuk __ construct

2 Cevap

Çocuk sınıfın kurucu tanımlar Hayır, eğer ebeveyn sınıfının yapıcı denir.

Çocuğunuzun sınıfının yapıcısı itibaren, ebeveynin sınıfın kurucusunu çağırmak zorunda:

parent::__construct();

Gerekirse geçirerek, parametreleri.

Genellikle, herhangi bir özel kod önce, çocuğun sınıfının yapıcı başında bunu yapacağız; sizin durumda, yani, sen olurdu:

class Child extends Base {
    function __construct() {
        parent::__construct();
        echo 'Child __construct<br/>';
    }
}


And, for reference, you can take a look at this page of the PHP manual : Constructors and Destructors -- it states (quoting) :

Note: Parent constructors are not called implicitly if the child class defines a constructor.
In order to run a parent constructor, a call to parent::__construct() within the child constructor is required.

Eh, ben sadece docs bunu buldum:

Note: Parent constructors are not called implicitly if the child class defines a constructor. In order to run a parent constructor, a call to parent::__construct() within the child constructor is required.