PHP суперкласс и подкласс - PullRequest
       4

PHP суперкласс и подкласс

0 голосов
/ 24 февраля 2012

Простой вопрос, имеет ли смысл следующее?

Расширение класса B Класс A

Конструктор класса A:

function __construct(){
    //do something
}

Конструктор класса B:

function __construct(){
    parent::__construct();
}

Isесть ли какое-либо существенное преимущество для реализации дочернего конструктора вообще в этом случае?

Я могу только думать о:

  • Весь код для класса B будет более "полным" по структуре

Было бы интересно узнать, есть ли существенные преимущества в кодировании или структурировании и т. Д.

Ответы [ 3 ]

4 голосов
/ 24 февраля 2012

Единственный раз, когда вы хотите вызвать родительский конструктор из своего подкласса (дочерний класс), это когда вы хотите добавить пользовательский код в свой конструктор.

В вашем примере вы можете опустить метод __construct ()в целом в классе B.

Однако вы можете сделать что-то вроде этого:

class A {

  function __construct() {
    run_a_function();
    $this->set = "a variable";
  }

}

class B {

  function __construct() {
    run_a_function_specific_to_class_b();
    $this->set = "a variable specific to class b";

    // now call the parent constructor
    parent::__construct();
  }

}
0 голосов
/ 24 февраля 2012

Локальный конструктор переопределяет своего родителя:

<?php
class Blog extends CI_Controller {

       public function __construct()
       {
            parent::__construct();
            // Your own constructor code
       }
}
?>

Если у вас есть метод __construct () в дочернем классе, вы должны явно вызвать родительский конструктор.

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

0 голосов
/ 24 февраля 2012

Нет.Если все, что ваш конструктор (или любой метод в этом отношении) делает, это вызывает метод parent с тем же именем, тогда никакого преимущества не будет.Просто больше строк кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...