Temel php sınıf problem

4 Cevap php

Bear with me cos I'm new to oop! Is it possible to assign the result of a function to an attribute?
This probably doesn't make sense so here's what I think the code might look like!

Class b extends a 
{ 
    public $conn= $this->connect();

    public function operation() { ...}

}

connect(), bir veritabanı ve getiri $result eğer başarılı bağlanır sınıf a bir fonksiyonudur.

4 Cevap

Evet bu mümkün ama constructor gibi bir yöntemle yapmak gerekir:

Class b extends a { 
    public $conn;
    public function __construct() {
        $this->conn = $this->connect();
    }
    public function operation() { /* ... */ }
}

Ben genellikle böyle bir şey yapmak

$link = mysql_connect(.....,......,......);

Class b extends a { 
    public $conn;
    public function __construct($link) {
        $this->conn = $link;
    }
    public function operation() { /* ... */ }
}
$a = new b($link);

sonra bağlantı bilgilerini tek bir yerde onları değiştirmek değiştirmek ve eğer siz yapabilirsiniz farklı bir sunucuya bağlanmak ve diğer bağlantı değişken geçmek için gerekiyorsa.

Oop veritabanı entegrasyonu için bir başka ipucu her zaman yapmak için bir DBable temel sınıfa sahip olan sizin temel) yük () () sayısı (bulmak, vb) daha çabuk db savable nesneleri ile çalışmak için (save

BaseDBClass
   A
      B
      C
      D
   X
      Y
      Z

Veya otomatik olarak bunu yapmak için yapıcı yöntemini kullanın - Sen bir yöntem içinde bağlamak için çağrı koymak ve sonra bağlantıyı başlatmak için sınıf örneği bir kez yöntemini çağırmanız gerekir.

Eğer çağrılır connect() yöntemin ne uygulaması belirli olamaz Genel olarak, bu, kötü şeklidir. Bu, mevcut sınıfından bir veya üst sınıftan biri mi? Aslında, ben PHP bile bu izin bile sürpriz olurdu.

Başlatma kurucu içinde yapılmalıdır, ama o zaman bile başlatma gerektirir ne bağlıdır. Bunun başka bir yöntemi çağırarak gerektiriyorsa, o zaman aynı sorun yukarıdaki gibi var: yöntemin hangi sürümünü aramak için?

Ancak, tarif senaryo için, ben bildiri de, ne de bir yapıcısı içinde üye değişkeni initialize olurdu ne. Bunun yerine, $conn kurucusuna geçerdi. Bu bağımlılık enjeksiyon temelidir.