我想给受保护的属性授予另一个类。我一直试图想出一个聪明的方式来做到这一点。我想授予访问受保护的属性给另一个类
我有一类
abstract class Form_Abstract {
protected $formAttributes = array();
protected $fields = array();
}
与$域和$ formAttributes setter方法。为了使它更加复杂,字段设置器方法创建一个单独的Field类和它自己的受保护属性,并将其添加到字段列表中。我想强制使用setter来管理进入这个类的数据。
但是,我希望能够通过这个类到各种其他类,这将抓取数据并以不同的方式使用它。其他类将使用这些数据的方式非常不同,因此很难执行命令类型模式。
事情我已经考虑:
使用__get方法从类的外部访问受保护的特性,从而使得基本上只读类。然而,这要花费大约350%的时间来访问这些变量。
有一个方法可以输出多维数组中的所有类变量。虽然这似乎是隐藏类内部的最好方法,但对于每个脚本实例可能多次生成这些数组,似乎并不是非常有效。
做某种继承技巧,允许访问扩展特定基类或类的类。这似乎是一个很酷的选择,但是以我想避免的方式创建依赖关系。它也需要特殊的方法来获取变量。
我当然可以让所有的公共属性,但是这并不让我来控制云中的数据。
知道的任何意见或想法。
试试看看这个问题:http://stackoverflow.com/questions/317835/php-equivalent-of-friend-or-internal – 2011-06-02 23:29:13
@AdrianMar是的,这是类似的,我已经考虑过,但正如在原始帖子,__get非常慢。 – dqhendricks 2011-06-02 23:38:54
对不起,阅读时必须跳过那一行。那么,除了按照下面的建议扩展主类外,我没有看到其他直接的选择。祝你好运! – 2011-06-02 23:41:20