1 回答

TA貢獻1878條經驗 獲得超4個贊
根本不需要使用反射。你可以使用神奇的方法。具體說來。文檔。_call()
一個非常簡單、幼稚的實現(xiàn):
class Category
{
private $data1;
private $data2;
private $data3;
private $bigData12;
public function __call($method, array $arguments)
{
$verb = substr($method, 0, 3);
$noun = lcfirst(substr($method, 3));
if (!property_exists($this, $noun)) {
throw new Exception('Property does not exist');
}
switch($verb) {
case 'set':
$this->$noun = $arguments[0];
return $this;
case 'get':
return $this->$noun;
}
}
}
$cat = new Category();
$cat->setData1('hello')
->setData2('hola')
->setData3(12345)
->setBigData12('hello world');
echo $cat->getData1(), "\n";
echo $cat->getData2(), "\n";
echo $cat->getData3(), "\n";
echo $cat->getBigData12(), "\n";
你可以在這里看到它的工作原理。
請注意,我不建議這樣做太多。這種事情非常容易出錯,不能被類型暗示,收益從微不足道到根本不存在。
- 1 回答
- 0 關注
- 123 瀏覽
添加回答
舉報