在下面的代碼中,我想爲「$o
」分配「新值」。所以我的預期輸出爲var_dump
將是新值。但是,我的var_dump
正在輸出Stackoverflow。__set()返回不能分配給新變量
我知道PHP有多個變量賦值,但是有沒有辦法讓它按照我的預期工作?
編輯:有沒有辦法「繞過」默認行爲__set()
void return?
<?php
class MyTable {
private $name;
public function __set($p, $v) {
# $this->{$p} = $v;
return $this->$p();
}
private function name() {
var_dump("I'm executing!");
return "New Value!";
}
}
$oMyTable = new MyTable();
$o = $oMyTable->name = 'StackOverflow';
var_dump($o);
?>
你可以看到它住在這裏:http://3v4l.org/b5DuF
非常非常奇怪的使用setter的方法。 Setter的目的是在對象內部設置一些東西,而不僅僅是將值返回給外部範圍。那麼爲什麼使用setter只是常規方法? –
設置一個變量的返回值將是對象本身,在我的真實代碼中(問題上的代碼僅僅是一個例子)。 –