Небольшая экскурсия в ооп
class SomeClass { // это класс SomeClass
private $member; // это закрытое свойство $member;
public $foo; // это публичное свойство $foo;
function __set($name, $val) { // это метод __set()
$this->member[$name] = $val; // это сохранение значения в свойство $member;
}
function __get($name) { // это метод __get()
return $this->member; // это получение свойства $member;
}
}
$SomeObj = new SomeClass(); // это мы создали объект
$SomeObj->foo = 'bar'; // это мы записали в свойство $foo строку
$SomeObj->baz = 'ups'; // это мы хотели записать строку в свойство $baz, но стоп, у нас ведь нет такого свойства!
Но зато есть метод __set(). Именно в него попадет имя неопределенного в классе свойства, в которое мы попытались что то записать и записываемое значение заодно. Таким образом мы могли бы трактовать этот код так:
$SomeObj->member['baz'] = 'ups';
Ну, не учитывая, что свойство member у нас приватное и так обратиться к нему невозможно...
То есть, другими словами, этот код занимается следующим: складывает в $member имя и значение неизвестного свойства, в которое мы пытаемся что то записать. А при попытке получения неизвестного свойства нам возвращается весь массив $member. Что, кстати, не логично. __get() должен был бы выглядеть так:
function __get($name) {
return $this->member[$name];
}
теперь мы получаем не все содержимое $member, а только содержимое того ключа, в который ранее (по идеи) что то записали.
Читайте доку, кстати.