簡體   English   中英

PHP類封裝選項

[英]PHP class encapsulation options

在最近的閱讀中,我看到有關封裝方法和OOP最佳實踐的相互矛盾的建議。

我正在開始開發一系列PHP類,這些類將用於將數據從多個源系統傳輸和轉換到最終目標。 因此,第一類的屬性將包含源URL和身份驗證值。

下列哪一項最適合於無限擴展潛力的長期項目?

  1. 聲明為公共財產。 構造類時,在外部為每個源設置值。 親:簡單。 缺點:沒有封裝優勢

  2. 使用__get和__set。 在外部為每個來源設置值。 Pro:遵循OOP約定。 缺點:將所有內容開放給外部訪問; 再次,沒有封裝

  3. 將屬性聲明為受保護的。 對於每個我需要使用的源系統,擴展原始類並在子類中設置屬性。 Pro:OOP封裝。 缺點:需要管理更多的類和可能的文件。

當前,盡管有文件開銷,選項3似乎是最好的。 我也歡迎其他想法。

我為這個問題閱讀的參考文獻:

http://typicalprogrammer.com/?p=23

吸氣和塞特?

http://www.php.net/manual/en/language.oop5.overloading.php

獨立的獲取/設置方法,還是結合使用?

http://martinfowler.com/bliki/GetterEradicator.html

在OOP中值得獲取和設置方法嗎?

至少還有一個選擇:將這些參數注入正在構造的對象中,並通過吸氣劑使它們成為只讀的“屬性”。 僅通過工廠構造對象(您也可以強制執行此操作,但是我不確定這樣做是否有任何實際好處)。

可以在啟動時配置工廠(可能是一個加號),只有一類傳輸,並且消費者只能以其選擇公開(封裝)的方式查看每個傳輸的狀態。

選擇三,但實際上您應該將它們設為私有。 (請注意,除了您列出的三個之外,還有更多的優化蛋白,這不一定是最佳選擇,但是我沒有足夠的信息來為您選擇。)另外兩個選擇對於開發可擴展的OOP應用程序都不是特別有用。 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM