С помощью специального метода "__unset()" можно уничтожить член класса. При установки значений свойств с помощью специального метода "__set()" данные значения помещаются в закрытый массив.
В закрытом массиве уничтожение отдельных свойств не допускается, однако перегрузка метода "__unset()" позволяет снабдить класс такой возможностью:
class MyUnset {
private $_myArray = array();
public function __get ($_indexes) {
return $this->_myArray[$_indexes];
}
public function __set ($_indexes, $_values) {
$this->_myArray[$_indexes] = $_values;
}
public function __isset ($_indexes) {
return isset($this->_myArray[$_indexes]);
}
/* Метод "__unset()" доступен с версии 5.1 */
public function __unset ($_indexes) {
unset($this->_myArray[$_indexes]);
}
}
Несмотря на то что массив "$_myArray" является закрытым членом, его можно уничтожить при помощи функции "unset()".
$_Class_MyUnset = new MyUnset();
$_Class_MyUnset->newname = 'Новое свойство';
echo '<pre>';
print_r($_Class_MyUnset);
echo '</pre>';
unset($_Class_MyUnset->newname);
echo '<pre>';
print_r($_Class_MyUnset);
echo '</pre>';
Результат работы:
MyUnset Object
(
[_myArray:MyUnset:private] => Array
(
[newname] => Новое свойство
)
)
MyUnset Object
(
[_myArray:MyUnset:private] => Array
(
)
)
Использование конструкции "unset()" приводит к уничтожению динамического свойства.
26 апр. 2012
3,213
0
Добавить комментарий