Вроде. Существуют магические методы, которые позволяют вам подключить свой собственный код для реализации поведения класса во время выполнения:
class foo {
public function __get($name) {
return('dynamic!');
}
public function __set($name, $value) {
$this->internalData[$name] = $value;
}
}
Это пример динамических методов получения и установки, он позволяет вам выполнять поведение при каждом обращении к свойству объекта. Например
print(new foo()->someProperty);
напечатает, в этом случае, "динамический!" и вы также можете присвоить значение произвольно названному свойству, и в этом случае метод __set () вызывается без предупреждения. Метод __call ($ name, $ params) делает то же самое для вызовов метода объекта. Очень полезно в особых случаях. Но в большинстве случаев вы получите:
class foo {
public function __construct() {
foreach(getSomeDataArray() as $k => $value)
$this->{$k} = $value;
}
}
... потому что в основном все, что вам нужно, - это сбросить содержимое массива в поля классов с соответствующими именами один раз или, по крайней мере, в очень явных точках пути выполнения. Поэтому, если вам действительно не нужно динамическое поведение, используйте этот последний пример для заполнения ваших объектов данными.
Это называется перегрузкой
http://php.net/manual/en/language.oop5.overloading.php