我正在尝试通过在PHP中执行以下操作来使我的代码更干燥:
function accessor($obj, $property) {
return $obj->$property;
}
class SomeClass {
private $variable;
function variable() {
return accessor($this, 'variable');
}
}
$some = new SomeClass;
echo $some->variable();
上面的代码抛出错误,因为外部函数无法访问私有变量。代码被简化,进一步编码会使它更有用。
我不确定这是否可行,但肯定会很好!
答案 0 :(得分:4)
你想要的是什么特性(PHP 5.4 +) - 它们实际上粘贴到它们的父类中,因此它们可以访问私有状态:
trait VariableThingy {
function accessor($property) {
return $this->$property;
}
}
class Test {
use VariableThingy;
private $variable = 15;
function variable() {
return $this->accessor("variable");
}
}
但不,它并不好。这太残暴了。整个代码都是毫无意义的。如果你想要干,只需使用公共变量。 DRY 和封装的通常是互斥的。