私はその非常に単純な質問だとは思いますが、わかりません。PHP __set変数__getは参照渡しです
私はクラスを持っています。しかし、なぜ「コード」ブロックはとにかく、地獄のように迷惑です
<?PHP
class PropertyTest {
private $data = array();
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
$trace = debug_backtrace();
trigger_error(
'Undefined property via __get(): ' . $name .
' in ' . $trace[0]['file'] .
' on line ' . $trace[0]['line'],
E_USER_NOTICE);
return null;
}
public function __isset($name) {
echo "Is '$name' set?\n";
return isset($this->data[$name]);
}
public function __unset($name) {
echo "Unsetting '$name'\n";
unset($this->data[$name]);
}
public function getHidden() {
return $this->hidden;
}
}
?>
わかりません。
基本的な魔法は本当にセットになります。私は、参照によって渡す__get
を変更した場合でも、私はもうこれを行うカント:私はそれが存在するかどうかをチェックするために想定したがが、それは参照することによって何かを返すことがあるので、それが失敗する理由
$object->$variableName = $variableValue;
が、私はわからないんだけどもしそれが存在しなければ、そうすることはまずありません。 set関数はおそらく呼び出されません。たとえ偽の値を返しても、set関数を呼び出すことはありません。なぜなら、それは既に存在しているか、値を持っているからです。
これを正しく理解していますか?もしそうなら、回避策はありますか?どのように動作し、回避策がありますか?
参照渡しに変更しようとしている部分を具体的に表示できますか?引数をこのように設定すると致命的になってしまいます** PHP致命的なエラー:メソッドPropertyTest :: __ get()は参照で引数を取ることができません** – quickshiftin
public function&__ get($ name){ – John