PHP içinde bir sınıfın ctor 'final' ilan kötü bir uygulama mı?

2 Cevap php

Ben, bir sürü ve diğer sınıfların sürü tarafından genişletilmiş bir üst sınıf var ve ben ana sınıfının yapıcı DAİMA çalıştırmak emin olmak isterseniz, bu kurucu final bildirmek için kötü bir fikirdir?

Ben böyle bir şey yapmayı düşünüyordum:

class ParentClass {

    public final function __construct() {

        //parent class initialization...

        $this->construct();

    }

    protected function init() {

        echo 'constructing<br>';

    }

}

class ChildClass extends ParentClass {

    protected function init() {

        //child class initialization

        echo 'constructing child<br>';

    }

}

bu şekilde çocuğun sınıf bir tür-kurucu olabilir, ve üst sınıfın yapıcı daima yerine getirecektir. Bu kötü bir uygulama mı?

2 Cevap

Bildirmek bir final __construct sizin sınıfını genişleten kimse aynı adla bir yöntem uygulayabilirsiniz sağlar. Bunun yüzeyinde, o zaman hiç kimse bu sınıfın alt sınıfları için bir kurucu ilan demek istiyorsunuz gibi bu görünüyor, ancak bu doğru değildir ClassName() hala çalıştığını PHP 4 tarzı beri kurucu için alternatif bir isim olarak iyi. Yani gerçekten, nihai olarak bir kurucu ilan size PHP hiçbir şey alır.

Kurucu sonuçlandırılması sonra, işlevi başlatırken herhangi değişkenleri geçemez. Bu size sınıfının kullanıcıları kendi çocuk sınıflar için ayarları olarak küresellerle kullanmaya zorlar.

Zend Framework geçersiz kılınabilir init () kullanarak yaygın bir uygulamadır, ama orada bir kurucu halini görmedim.