我是php命名空间的新手,我想知道以下是否可行:
我有一个函数my_function
,我希望它只能在一个命名空间的类中使用。
例如,在文件helpers.php
中我有
function my_function() {
return 'something';
}
在fileA
namespace my_namespace
class A {}
在fileB
namespace my_namespace
class B {}
在fileC
namespace other_namespace
class C {}
有没有办法让类A和B中的函数my_function
可用,但不能在C类中使用?
为了更好地理解这个概念,这是一种好奇心。
答案 0 :(得分:0)
不,这不是命名空间的用途。
中所述在PHP世界中,命名空间旨在解决库和应用程序的作者在创建可重用的代码元素(如类或函数)时遇到的两个问题:
- 您创建的代码与内部PHP类/函数/常量或第三方类/函数/常量之间的名称冲突。
- 能够别名(或缩短)Extra_Long_Names,旨在缓解第一个问题,提高源代码的可读性。
醇>PHP命名空间提供了一种对相关类,接口,函数和常量进行分组的方法。
关于您的代码:如果helpers.php
文件中没有命名空间,则my_function()
会添加到Global space,并且可以在您的应用程序中的任何位置调用。
如果您在fileA
中声明该功能,则可以使用\my_namespace\my_function()
从应用程序的任何位置调用该功能。