有点。有一些魔术方法可以让您连接自己的代码以在运行时实现类行为:
class foo { public function __get($name) { return('dynamic!'); } public function __set($name, $value) { $this->internalData[$name] = $value; }}这是动态getter和setter方法的示例,它使您可以在访问对象属性时执行行为。例如
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



