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



我的一些PHP域对象具有应从对象外部设置的属性,但只能由某些客户端对象设置。我该如何执行?

我在类中使用二传手,

只要我能找到一种区分不同调用者的方法,我相信我可以在二传手中进行一些检查。 不过,这似乎有点令人费解。 我感觉我违反了OO设计原则(也许是"告诉,不要问"?

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

在这种情况下,

我觉得这是一个糟糕的设计。你会违反类的单一责任原则。相反,请将代码重构为多个类,但使用组合来附加可选属性。

例如:

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是自定义属性数据的接口。

最新更新