1

我到处都是方便的方法。我现在已经将这些推送到了几个帮助类中,并且我让帮助类保护了我的层超类型的成员。

在我来到 Zend View 之前,一切都进行得很顺利。我扩展了 Zend View 以使我的图层超类型,但是当我尝试附加受保护的成员时,它会抛出:

Zend View 例外:不允许设置私有或受保护的类成员。

首先,为什么不允许这样的成员?有任何想法吗?其次,你过去有没有绕过它?那是怎么回事?(似乎框架通过前导下划线的存在来检测受保护的成员。这似乎有点偶然,也很容易绕过)。

注意 - 我并不是说我会规避它。我只是想找出其他人过去做了什么(因为这似乎是一个奇怪的限制)。

这对我来说很重要,因为我使用特征将助手和相关代理方法带入每个超类。我不想只为视图维护一个单独的特征。或者,我不想让助手成为每个超类的公共成员。

谢谢!

4

1 回答 1

1

数据封装。

不允许使用下划线属性,主要是为了让开发人员不会意外覆盖作为框架一部分的视图属性。

这实质上保护了框架的所有 View 属性,并允许开发人员对您希望设置的任何公共属性进行免费雨淋。

Zend View 的作者可以确定两件事:(1)他们控制(和创作)私有和受保护的类属性,(2)您控制公共属性。这使得逻辑数据封装和可维护的类重载成为可能。

于 2013-04-01T22:13:13.070 回答