Приднестровская поддержка XOOPS
Если свойство или метод объявлены как защищенные (protected), то это означает, что доступ к ним возможен только изнутри самого класса или его классов-потомков (классов, которые унаследованы от класса, содержащего защищенный метод).
Объявите метод getProperty() как защищенный в классе MyClass и попытайтесь получить к нему доступ извне класса.
<?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;
}
protected function getProperty()
{
return $this->prop1 . "<br />";
}
}
class MyOtherClass extends MyClass
{
public function __construct()
{
parent::__construct();
echo "Новый конструктор в классе " . __CLASS__ . ".<br />";
}
public function newMethod()
{
echo "Новый меиод в классе " . __CLASS__ . ".<br />";
}
}
// Создать новый объект
$newobj = new MyOtherClass;
// Попытаться вызвать защищенный метод
echo $newobj->getProperty();
?>
Попытка выполнить этот сценарий приведет к ошибке.
А теперь создайте в классе MyOtherClass новый метод и используйте его для вызова метода getProperty().
<?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;
}
protected 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();
?>
Теперь этот сценарий сгенерирует требуемый результат.
Отправитель | Нити |
---|
7 пользователь(ей) активно (2 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 7 далее... |