gpt4 book ai didi

PHP 命名空间,已经在命名空间中?

转载 作者:行者123 更新时间:2023-12-04 17:01:10 25 4
gpt4 key购买 nike

我正在学习 PHP 命名空间。有一小块我不明白,例如:

use Hello\Hello2;

require 'Hello/Hello2/Hello.php';

$h = new Hello2\Hello();

echo $h->sayHello();
对我来说,当我说: use Hello\Hello2在我看来,我在命名空间 Hello2 中,所以我不明白为什么我必须像这样实例化我的对象:
$h = new Hello2\Hello();
为什么不只是这样(因为我已经在命名空间 Hello2 中)
$h = new Hello();
问候,
马塞尔

最佳答案

重要的是要了解这些 use您声明别名的语句(隐式,如您的示例中或显式)。
所以当你写作的时候

use Hello\Hello2;
你基本上在写
use Hello\Hello2 as Hello2;
正如你声明别名 Hello2对于命名空间 Hello\Hello2 .将其视为一种搜索和替换机制。
如果要直接使用类名,则必须使用类的完全限定名:
use Hello\Hello2\Hello;

...

new Hello();
更新:

Why not just like this (cause i am already in namespace Hello2)


不,您不在 Hello2 命名空间中。为了在命名空间中“存在”,您必须使用 namespace陈述。您一次可以在一个命名空间中,但您可以声明多个 use语句,它们同样是其他命名空间、类、函数甚至常量的“只是”别名(或快捷方式声明,如果您愿意)。
PHP 手册中的更多详细信息: https://www.php.net/manual/en/language.namespaces.importing.php .

关于PHP 命名空间,已经在命名空间中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65286703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com