Neden PHP otomatik olarak ana Kurucular aramıyor?

2 Cevap php

Oldukça basit bir soru. C + + ebeveyn yapıcı örtülü çocuk yapıcısı önce çağrılmalıdır olacak, bu yüzden ne mantık şeyleri bu şekilde yapmak için PHP için var değil mi?

EDIT: Ben Lukman iyi bir cevap var, ama bir fark var bir neden daha fazla umut oldu. Belki soru neden C + + ebeveyn kurucular özel arama izin vermez olmalıdır? O olsa da başka bir soru sanırım.

2 Cevap

Ben böyle aşağıdaki gibi çocuğun kurucu verir çünkü, PHP elle ebeveynin yapıcı çağrı yapan iyi bir şey olduğunu düşünüyorum:

public function __construct() {
   // set up variables that parent::__construct() requires
   $var1 = get_stuff_from_db();
   $var2 = get_stuff_from_webservice();

   parent::__construct($var1, $var2);

   // continue setting up $this var
   $this->default = 'Default';
   $this->do_some_secret_stuff();
}

Ya da:

public function __construct($param) {
   // call differently based on condition
   if (is_array($param))
      $param['id'] = 0;
      parent::__construct($param);
   }
   else {
      parent::__construct($param, 0, TRUE);
   }

   // continue setting up $this var
   $this->default = 'Default';
   $this->do_some_secret_stuff();
}

Anlamı, her yerde çocuğun içindeki ana kurucusunu çağırmak için ücretsiz ve çağrı önce ve sonra bir şeyler yapmak serbesttir. Bu gerçekten bir özellik değil midir?

to avoid tight coupling that's why inheritance (extend keyword in java) is evil and interface class is prefered see Javaworld article: http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-toolbox.html

Orada ileri gibi özel bir kelime ile bir noktada ebeveyn aramak için bazı talimat oldu ama ben henüz evet co (Paul Allen tarafından icat bilinmeyen bir dil dışında bir dilde (hatta Rebol) bu görmedim eğer Yine harika olurdu OpenScript olan Microsoft'un kurucusu).