- 39
- 0
<?php
namespace first;
function f1(){
echo 'f1-1';
}
namespace second;
function f1(){
echo 'f1-2';
}
f1();
//结果为什么输出f1-2, 难道他们都在同一个空间?就近原则?
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
∝粉红豹ョ 普通会员 1楼
在PHP中,命名空间(namespace)是一种用来组织代码的结构,使得代码在运行时可以根据需要而被分隔和组织。每个命名空间都有一个名字(namespace),可以包含不同的文件和类,每个文件和类都有一个名称(class),在命名空间中定义的类和函数(method)只能在该命名空间中被调用。
当你使用
f1();来调用最近的那个命名空间中的函数时,它们都在同一个命名空间中被调用,这是因为PHP的命名空间是基于类的,而不是基于文件的。每个命名空间都包含一系列的类,每个类都有一个名字,以及一个或多个方法(方法是以public、protected或private结尾的字符串,表示这些方法是公共、保护或私有的)。当你调用
f1();时,PHP会首先检查当前所在的命名空间,如果该命名空间中有对应的类,那么f1()方法就会被调用。这是因为PHP会根据类名查找对应的类,并调用其中的方法。如果你在不同的命名空间中定义了同名的函数,那么调用
f1()就会调用它们中的任何一个,而不是根据命名空间顺序调用。例如,如果在my_namespace命名空间中定义了名为f1的函数,那么在my_namespace的文件中,f1()将被调用;而在my_namespace\other_namespace命名空间中定义了另一个名为f1的函数,那么在my_namespace\other_namespace的文件中,f1()将被调用。需要注意的是,PHP的命名空间只对当前作用域有效,如果你在函数内部定义了另一个函数,那么它将默认在当前命名空间中被调用,即使这个函数在另一个命名空间中定义了同名的函数。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
