Superclass yapıcı PHP çocuk Kurucuların içinde çalıştırılır?

3 Cevap php

Ben bu sınıf varsa:

<?php
class Model
{
    var $db;

    function Model()
    {
        $this->db=new Db_Class();
    }
}
?>

ve üst sınıfı genişletilmiş bir ikinci sınıf:

<?php
class LessonModel extends Model
{

    public function LessonModel()
    {
        //code here
    }

    public function getTitle($id)
    {
       $this->db->setTable('myTable');
       return $this->db->get('title',$id);
    }
}
?>

O $LessonModel->db alan ebeveyn tarafından başlatılmış olacağını varsaymak güvenli Model sınıfının yapıcı, ya da ben gibi bir şey kullanarak elle çalıştırmak gerekiyor mı parent::Model(); ?

3 Cevap

Eğer alt sınıfında bu geçersiz çünkü ana yapıcısı adı olmuştur ki kabul edemeyiz. Eğer önermek gibi parent::Model() aramak gerekir. Eğer sizden devralmasını sınıfını değiştirirseniz Açıkçası bu değiştirmeniz gerekir.

Eğer PHP5 kullanıyorsanız o zaman Kurucular adlandırabilir __construct(). Bu kolayca ebeveyn sınıfının ismini belirtmeden herhangi bir türetilmiş sınıfa parent::__construct() yaparak bir üst kurucusunu çağırmak icar yararı vardır. Daha sonra daha az güçlük ve belirsiz hata tanıtılması az tehlike ile sınıfların 'miras yeniden düzenleyebilirsiniz.

Verilen örnekte, varsayabiliriz.

Çocuğunuzun sınıfı bir yapıcı tanımlar Ancak, PHP örtük bu ebeveyn yapıcı bulunuyor aramayacak.

Bunu yapmak için, çağırır:

parent::__construct();

Ebeveyn kurucusunu çağırmak zorunda etrafında almak için ucuz bir yolu var.

Temel sınıfta boş init () yöntemi oluşturabilirsiniz. Çağrı $ this-> baz sınıf oluşturucu () init.

Onlar sınıfı oluşturulduğunda kod çalıştırmak istiyorsanız tüm alt-sınıflar () init uygulayabilirsiniz.