PHP - расширенная __construct

Если вам нужен префикс, который вам может понравиться

 for ((i=7;i<=12;i++)); do echo `printf "%2.0d\n" $i |sed "s/ /0/"`;done

, который даст

07
08
09
10
11
12
29
задан Somebody62 31 January 2019 в 02:45
поделиться

3 ответа

Родительский метод __construct(), определенный в классе b, будет запускаться автоматически, если вы создадите экземпляр дочернего класса a, , если только не существует метод __construct(), определенный в классе a.

class a extends b { 
} 

class b { 
   public function __construct() 
   { 
      echo 'In B Constructor'; 
   } 
} 

$x = new a();

Если метод __construct() определен в классе a, то это отменяет использование метода __construct() в классе b .... он будет запускать вместо класса b __construct() method

class a extends b { 
   public function __construct() 
   { 
      echo 'In A Constructor'; 
   } 
} 

class b { 
   public function __construct() 
   { 
      echo 'In B Constructor'; 
   } 
} 

$x = new a();

Итак, если в вашем дочернем классе определен метод __construct(), то вам нужно явно вызвать конструктор для родителя, если вы хотите выполнить его также.

class a extends b { 
   public function __construct() 
   { 
      parent::__construct();
      echo 'In A Constructor'; 
   } 
} 

class b { 
   public function __construct() 
   { 
      echo 'In B Constructor'; 
   } 
} 

$x = new a();
77
ответ дан Mark Baker 31 January 2019 в 02:45
поделиться

Я не уверен, что полностью понимаю, о чем вы спрашиваете, но вы можете вызвать метод конструирования родителей из конструктора ребенка

parent::__construct();

Это единственный вариант, который я знаю.

10
ответ дан GWW 31 January 2019 в 02:45
поделиться

Позвоните parent::__construct() в a::__construct():

class a extends b
{
   public function __construct()
   {
       parent::__construct();
   }   

   public function validateStuff()
   {
      $this->insert_record();
   }
}

. Вы можете вообще не указывать конструктор a, если вы не делаете какой-то специфической вещи.

4
ответ дан Annika Backstrom 31 January 2019 в 02:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: