Приднестровская поддержка XOOPS
Свойство или метод, объявленные как закрытые (private), доступны лишь в классе, в котором они определены. Это означает, что даже если новый класс расширяет класс, содержащий определение закрытого свойства, это свойство или метод не будут доступны в дочернем классе.
Чтобыэто продемонстрировать, объявимметод getProperty() в классе MyClass как закрытый и попытаемся вызвать метод callProtected() из класса MyOtherClass:
<?php
class MyClass
{
public $prop1 = "Это свойство класса!";
public function __construct()
{
echo 'Класс "', __CLASS__, '" инициирован!<br />';
}
public function __destruct()
{
echo 'Класс "', __CLASS__, '" уничтожен.<br />';
}
public function __toString()
{
echo "Используем метод toString: ";
return $this->getProperty();
}
public function setProperty($newval)
{
$this->prop1 = $newval;
}
private function getProperty()
{
return $this->prop1 . "<br />";
}
}
class MyOtherClass extends MyClass
{
public function __construct()
{
parent::__construct();
echo "Новый конструктор в классе " . __CLASS__ . ".<br />";
}
public function newMethod()
{
echo "Новый меиод в классе " . __CLASS__ . ".<br />";
}
public function callProtected()
{
return $this->getProperty();
}
}
// Создать новый объект
$newobj = new MyOtherClass;
// Использовать метод из родительского класса
echo $newobj->callProtected();
?>
После перезагрузки браузера вы столкнетесь с такой ошибкой.
Отправитель | Нити |
---|
27 пользователь(ей) активно (16 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 27 далее... |