1 回答
TA贡献1878条经验 获得超4个赞
根本不需要使用反射。你可以使用神奇的方法。具体说来。文档。_call()
一个非常简单、幼稚的实现:
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 关注
- 109 浏览
添加回答
举报