コンテキストは次のとおりです。
$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、有効なセッターを参照していない場合にヒットしましたが、参照していない場合はヒットしませんでした。毎回ヒットするはずだった。誰かがここで何が起こっているのか手がかりがありますか?