Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP好友/包可见性 有没有办法限制PHP中的可见性,就像“包”可见性在java中工作,或者C++中至少“朋友”可见性一样?维护大型OOP项目并且不让任何人使用代码的任何部分的最佳实践是什么_Php_Package_Visibility_Friend - Fatal编程技术网

PHP好友/包可见性 有没有办法限制PHP中的可见性,就像“包”可见性在java中工作,或者C++中至少“朋友”可见性一样?维护大型OOP项目并且不让任何人使用代码的任何部分的最佳实践是什么

PHP好友/包可见性 有没有办法限制PHP中的可见性,就像“包”可见性在java中工作,或者C++中至少“朋友”可见性一样?维护大型OOP项目并且不让任何人使用代码的任何部分的最佳实践是什么,php,package,visibility,friend,Php,Package,Visibility,Friend,我尽可能多地使用私有和受保护的可见性,但有时这还不够。我知道这个请求:。在PHP中实现这样的东西有什么进展吗?是否有任何解决方法可以保护您的代码(方法、类变量)不被从任何地方访问?如前所述: 不可以。您可以在声明命名空间后设置变量,但 将始终存在于全局范围内。他们从来没有义务 名称空间。你可以从没有名字的情况下推断出来 中的分辨率描述 直到今天,还没有语言结构来限制可见性。但您可以使用phpDocumentor的注释来注释您的类: @internal标记可以用作@api标记的对应项,表明相关结

我尽可能多地使用私有和受保护的可见性,但有时这还不够。我知道这个请求:。在PHP中实现这样的东西有什么进展吗?是否有任何解决方法可以保护您的代码(方法、类变量)不被从任何地方访问?

如前所述:

不可以。您可以在声明命名空间后设置变量,但 将始终存在于全局范围内。他们从来没有义务 名称空间。你可以从没有名字的情况下推断出来 中的分辨率描述


直到今天,还没有语言结构来限制可见性。但您可以使用phpDocumentor的注释来注释您的类:

@internal
标记可以用作
@api
标记的对应项,表明相关结构元素仅用于此软件的内部工作


这取决于API用户是否遵循该建议。

与Java中的包不完全一样,但可用于代码封装。请键入一个简短的示例,好吗?如果您确实需要,可以使用
debug\u backtrace
[查看什么代码调用您的代码。基本上是编写您自己的运行时访问控制。可能需要做的工作太多,而且
debug\u backtrace
的性能受到了影响。感谢您的回答。但是,我仍然想知道一些最佳实践或解决方法,以实现对代码的某种保护。我看不出这是如何回答的OP的问题。名称空间与访问可见性无关。@Markus我同意我的这个旧答案没有明确地解决它,但它说(与变量相反)任何名称空间中的所有内容都是全局的,因此您无法使用“private”或“protected”等访问修饰符隐藏成员。