PHP friend/package visibility

2020-08-19 04:38发布

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?

2条回答
爷、活的狠高调
2楼-- · 2020-08-19 05:18

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

查看更多
够拽才男人
3楼-- · 2020-08-19 05:30

Until today there's no language construct to limit the visibility. But you can annotate your class with phpDocumentor's @internal:

The @internal tag can be used as counterpart of the @api tag, 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.

查看更多
登录 后发表回答