[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Добавить свойство родителю
gam0ra
Как родителю добавить своивство из наследника?
пробывал у родителя создать __set
через __set($pr,$val) $this->$pr = $val
Но серавно своивство довалось не родителю
TMake
Цитата (gam0ra @ 30.03.2015 - 18:11)
Как родителю добавить свойству из наследника?

Никак.
Вообще для этого у родителя создается одна переменная, например $this->_variable = [];
и через setter и getter ты работаешь с ней.


class PropertyTest
{
/** Место хранения перегружаемых данных. */
private $data = array();

/** Перегрузка не применяется к объявленным свойствам. */
public $declared = 1;

/** Здесь перегрузка будет использована только при доступе вне класса. */
private $hidden = 2;

public function __set($name, $value)
{
echo "Установка '$name' в '$value'\n";
$this->data[$name] = $value;
}

public function __get($name)
{
echo "Получение '$name'\n";
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}

$trace = debug_backtrace();
trigger_error(
'Неопределенное свойство в __get(): ' . $name .
' в файле ' . $trace[0]['file'] .
' на строке ' . $trace[0]['line'],
E_USER_NOTICE);
return null;
}

/** Начиная с версии PHP 5.1.0 */
public function __isset($name)
{
echo "Установлено ли '$name'?\n";
return isset($this->data[$name]);
}

/** Начиная с версии PHP 5.1.0 */
public function __unset($name)
{
echo "Уничтожение '$name'\n";
unset($this->data[$name]);
}

/** Не "волшебный" метод, просто для примера. */
public function getHidden()
{
return $this->hidden;
}
}


Наследник и так является расширением родителя, т.е. создавая объект наследника у тебя есть все методы/свойства его, и все что находится у родителя по цепочке.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.