如何仅允许授权客户端访问对象属性

时间:2012-06-24 23:53:15

标签: php

我的一些PHP域对象具有应该从对象外部设置的属性,但仅限于某些客户端对象。我该如何执行此操作?

我在课堂上使用setter,并且我可以找到一种方法来区分不同的调用者,我确信我可以在setter中进行一些检查。这看起来有点令人费解。我觉得我违反了OO设计原则(也许是“告诉,不要问”)。

我想这是一个相当常见的情况。我错过了什么?

1 个答案:

答案 0 :(得分:0)

在这种情况下,这对我来说是一个糟糕的设计。你违反了班级的单一责任原则。相反,将您的代码重构为多个类,但使用组合来附加可选属性。

例如:

class MyDataObject {
    private $main_property;
    private $extended_property;

    /* ... getters/setters for $main_property. */
    public function set_extended_property(IExtendedProperty $property) {
        $this->extended_property = $property;
    }
}

其中IExtendedProperty是自定义属性数据的接口。