這裏的環境中稱之爲:
$values = $form->getValues();
foreach($values as $key=>$value) {
$obj->{$key} = $value;
}
如果$key
是一個有效的密鑰,__set($name, $value)
未被調用。如果$key
不是有效的密鑰,則是。這裏是我的設置是什麼樣子:
public function __set($name, $value) {
$method = 'set' . ucfirst($name);
if(method_exists($method)) {
$this->$method($value);
} else {
throw new RuntimeException('Attempt to access a non-existant property with method ' . $method);
}
}
在到該__set($name, $value)
方法屬於的對象,所有的屬性是私有的,並強調。因此,對於鍵「名」會有以下幾點:
private $_name;
public function setName($name) {
$this->_name = $name;
return $this;
}
我知道,那不叫,因爲我想只是$method = 'set' . ucfirst($name);
之後插入一個例外。當$name
沒有引用有效的setter時,該異常被觸發,但是當它沒有引用時沒有被觸發。它應該每次都被擊中。任何人都知道這裏發生了什麼?
+1使用Fluent接口並在適當的位置引發語義正確的PHP異常。 – Phil