Как можно получить доступ дочернего класса к переменным родительского класса?
Способ первый: необходимо несколько условий. 1 - переменные в родительском классе должны быть объявлены как protected, 2 - при объявлении дочернего конструктора, необходимо также объявить родительский конструктор, 3 - соответственно, обращаемся к переменной родительского класса как ко внутренней переменной $this->variable;
Способ второй: 1 - переменные в родительском классе могут быть закрытыми (private), 2 - необходимо создать методы, позволяющие получить доступ к переменным из дочернего класса, 3 - при объявлении дочернего конструктора, необходимо также объявить родительский конструктор, 4 - соответственно, обращаемся к переменной родительского класса через соответствующие методы parrent::getVariable();
Ниже приведен пример использования двух спобов обращения к переменным родительского класса.
<?php ##Обращение к переменным родительского класса. Два способа
// Родительский класс
class Item {
// Для первого способа необходим уровень конфиденциальности - protected
protected $name;
private $code;
// Консруктор родительского класса
function __construct( $name = "Item", $code = 0 ) {
$this->name = $name;
$this->code = $code;
}
// Для второго способа создаем метод
function getName() {
return $this->name;
}
// Также создаем метод для второго метода
function getCode() {
return $this->code;
}
}
// Дочерний класс
class PriceItem extends Item {
private $temp;
// Конструктор родительского класса
function __construct( $name, $code, $temp = "temp" ) {
// Обязательное объявление родительского конструктора
parent::__construct( $name, $code );
// Обращаемся к переменным родительского класса вторым способом - parent:getName() и getCode()
$this->temp = "temp = ".$temp." name = ".parent::getName()." code = ".parent::getCode();
}
// Для вывода результата обращения к переменным родительского класса первым способом
function getParentName() {
return $this->name;
}
// Для вывода результата обращения к переменным родительского класса вторым способом
function getIt() {
return $this->temp;
}
}
// Инстанцируем объект
$Item = new PriceItem(Name, 1616);
// Выводим результаты
print $Item->getIt();
print "<br />";
print $Item->getParentName();
?>