我想給受保護的屬性授予另一個類。我一直試圖想出一個聰明的方式來做到這一點。我想授予訪問受保護的屬性給另一個類
我有一類
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