コンテキストは次のとおりです。
$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)
は、すべてのプロパティがプライベートであり、下線が引かれています。したがって、キー'name'の場合、次のようになります。
private $_name;
public function setName($name) {
$this->_name = $name;
return $this;
}
の直後に例外を挿入しようとしたので、呼び出されないことはわかってい$method = 'set' . ucfirst($name);
ます。この例外は$name
、有効なセッターを参照していない場合にヒットしましたが、参照していない場合はヒットしませんでした。毎回ヒットするはずだった。誰かがここで何が起こっているのか手がかりがありますか?