有什麼辦法來限制PHP中的可見性,就像「包」可見性在Java中工作一樣,或者在C++中至少是「朋友」可見性?維護大型OOP項目並且不讓任何人使用任何代碼部分的最佳做法是什麼?PHP的朋友/軟件包的可見性
我儘可能多地使用私有和受保護的可見性,但有時這還不夠。我知道這個請求:https://bugs.php.net/bug.php?id=55331。在PHP中實現這樣的事情有什麼進展嗎?是否有任何解決方法來保護您的代碼(方法,類變量)不被任何地方訪問?
有什麼辦法來限制PHP中的可見性,就像「包」可見性在Java中工作一樣,或者在C++中至少是「朋友」可見性?維護大型OOP項目並且不讓任何人使用任何代碼部分的最佳做法是什麼?PHP的朋友/軟件包的可見性
我儘可能多地使用私有和受保護的可見性,但有時這還不夠。我知道這個請求:https://bugs.php.net/bug.php?id=55331。在PHP中實現這樣的事情有什麼進展嗎?是否有任何解決方法來保護您的代碼(方法,類變量)不被任何地方訪問?
如前所述here:
號你可以聲明命名空間後設置一個變量,但變量 總是會在全球範圍內存在。它們永遠不會綁定到 命名空間。可以推斷,從沒有任何名稱 解析描述的 http://www.php.net/manual/en/language.namespaces.faq.php
感謝您的回答。 Howerver,我仍然想知道一些最佳實踐或解決方法來實現對代碼的一些保護。 –
我不明白這是如何回答OP的問題。命名空間與訪問可見性無關。 –
@Markus我同意這個舊的答案沒有明確地解決它,但它說(與僅僅是一個變量相反)任何名稱空間中的所有內容都是全局的,因此你無法使用訪問修飾符來隱藏成員,如「私人「或」受保護「。 – CodeCaster
直到今天也沒有語言結構限制的知名度。但是你可以用的phpDocumentor的@internal
註釋類:
的
@internal
標籤可以被用作@api
標籤對應,這表明相關結構部件純粹用於此軟件的內部工作。
這取決於API用戶的建議。
與Java中的包不完全相同,但[namespaces](http://php.net/manual/en/language.namespaces.php)將用於代碼封裝。 – Shef
請你輸入一個簡短的例子嗎? –
只是一個想法,如果你真的需要你可以使用'debug_backtrace' [http://php.net/manual/en/function.debug-backtrace.php]來查看哪些代碼正在調用你的代碼。基本上寫你自己的運行時訪問控制。可能比它的價值更多的工作,'debug_backtrace'的性能受到影響。 – Chris