green-84
Новичок
метод __get и проблема
Создан некоторый класс SomeClass, свойства которого устанавливаются после инициализации объекта и задаются с помощью метода "__set", а получаются - с помощью "__get".
Вывод:
Возникла проблема при присвоении значения свойству "SomeCollection" объекта "obj".
При инициализации данного свойства
в массив "Properties" класса "SomeClass" добавляется новый элемент "SomeCollection"=>array('first'=>"FirstElement", 'second'=>"SecondElement")
но если я захочу установить новый элемент массива "SomeCollection" через
метод __get не вызывается.
Кто может подсказать как можно заставить срабатывать __get при
или предложить другой простой способ добавления элементов в массив "SomeCollection" кроме как
Создан некоторый класс SomeClass, свойства которого устанавливаются после инициализации объекта и задаются с помощью метода "__set", а получаются - с помощью "__get".
PHP:
<?php
class SomeClass {
private $Properties = array();
function __get($propertyName) {
if(array_key_exists($propertyName, $this->Properties)) {
return $this->Properties[$propertyName];
}
else {
echo("property ".$propertyName." not found <br />");
}
}# __get #
function __set($propertyName, $propertyValue) {
$this->Properties[$propertyName] = $propertyValue;
echo ("set $propertyName = ".var_export($propertyValue, true)." <br />");
}# __set #
}// SomeClass
$obj = new SomeClass();
$obj->Name = "TestObject";
$obj->SomeCollection = array('first'=>"FirstElement", 'second'=>"SecondElement");
$obj->SomeCollection['third'] = "ThirdElement";
echo $obj->Name; echo "<br />";
print_r($obj->SomeCollection); echo "<br />";
?>
Вывод:
PHP:
set Name = 'TestObject'
set SomeCollection = array ( 'first' => 'FirstElement', 'second' => 'SecondElement', )
TestObject
Array ( [first] => FirstElement [second] => SecondElement )
Возникла проблема при присвоении значения свойству "SomeCollection" объекта "obj".
При инициализации данного свойства
PHP:
$obj->SomeCollection = array('first'=>"FirstElement", 'second'=>"SecondElement");
но если я захочу установить новый элемент массива "SomeCollection" через
PHP:
$obj->SomeCollection['third'] = "ThirdElement";
Кто может подсказать как можно заставить срабатывать __get при
PHP:
$obj->SomeCollection['third'] = "ThirdElement";
PHP:
$SomeCollection = $obj->SomeCollection;
$SomeCollection['third'] = "ThirdElement";
$obj->SomeCollection = $SomeCollection;