从类中访问私有属性调用外部函数

时间:2014-10-14 16:22:20

标签: php class

我正在尝试通过在PHP中执行以下操作来使我的代码更干燥:

function accessor($obj, $property) {
  return $obj->$property;
}

class SomeClass {
  private $variable;

  function variable() {
    return accessor($this, 'variable');
  }
}

$some = new SomeClass;
echo $some->variable();

上面的代码抛出错误,因为外部函数无法访问私有变量。代码被简化,进一步编码会使它更有用。

我不确定这是否可行,但肯定会很好!

1 个答案:

答案 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 封装的通常是互斥的。