Наследование PHP - Родительская функция с дочерним атрибутом - PullRequest
0 голосов
/ 26 января 2019

Использование PHP 5.4 - Компания не будет обновлять, потому что она сломает существующий код.Извините за это.

Скажем, у меня есть класс Resource:

class Resource {
  private $resourceIdentifier;

  public function __construct() {
    $this->resourceIdentifier = "ResourceId";
  }

  public function getIdentifier() {
    return $this->resourceIdentifier;
  }
}

Затем у этого класса есть дочерний элемент:

class Employee extends Resource {
  public function __construct() {
    $this->resourceIdentifier = "EmployeeId";
  }
}

Затем я создаю экземплярof employee и вызов getIdentifier ()

$emp = new Employee();
echo $emp->getIdentifier();

Будет ли функция возвращать $resourceIdentifier от родителя или ребенка?

Кроме того, что произойдет, если я не определю$resourceIdentifier у родителя, а я у ребенка?

class Resource {
  public function getIdentifier() {
    return $this->resourceIdentifier;
  }
}

class Employee extends Resource {
  private $resourceIdentifier;

  public function __construct() {
    $this->resourceIdentifier = "EmployeeId";
  }
}

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Кроме того, что произойдет, если я не определю $ resourceIdentifier в родительском элементе, но я определю в дочернем?

Ответ:

Если вы определите егоимеет parent и вызывает его в child, вы следуете концепции наследования, следовательно, вы можете использовать один и тот же $ resourceIdentifier для многих потомков.

Будет ли функция возвращать $ resourceIdentifier от родителя или потомка?

Ответ: Доступ к методу дочернего класса из поля, заполненного родительским классом

Попытка взглянуть на это

0 голосов
/ 26 января 2019

Если атрибут $resourceIdentifier является закрытым, родительский класс не может получить к нему доступ. Вам нужно сделать его защищенным:

class Employee extends Resource {
  protected $resourceIdentifier;

  public function __construct() {
    $this->resourceIdentifier = "EmployeeId";
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...