问题
Is there any way to limit the visibility in PHP in the same way as "package" visibility works in Java or at least "friend" visibility in C++? What's the best practice to maintain large OOP project and not to let anyone use any part of code?
I use private and protected visibility as much as I can but sometimes it's not enough. I know about this request: https://bugs.php.net/bug.php?id=55331. Is there any progress in implementing such thing to PHP? Is there any workaround to protect your code (methods, class variables) from being accessed from anywhere?
回答1:
As stated here:
No. You can set a variable after declaring a namespace, but variables will always exist in the global scope. They are never bound to namespaces. You can deduce that from the absence of any name resolution descriptions in http://www.php.net/manual/en/language.namespaces.faq.php
回答2:
Until today there's no language construct to limit the visibility. But you can annotate your class with phpDocumentor's @internal:
The
@internaltag can be used as counterpart of the@apitag, indicating that the associated Structural Elements are used purely for the internal workings of this piece of software.
It's up to the API user to follow that suggestion.
来源:https://stackoverflow.com/questions/7292433/php-friend-package-visibility