gpt4 book ai didi

PHP 命名空间和实现关键字

转载 作者:行者123 更新时间:2023-12-04 16:52:50 25 4
gpt4 key购买 nike

use MyNamespace;

class NonPersistentStorage implements StorageInterface

两者都在 MyNamespace 中。然而,PHP 会查找 MyNamespace\NonPersistentStorage 和 StorageInterface(而不是 MyNamespace\StorageInterface)。我错过了什么吗?

最佳答案

PHP 命名空间的工作方式与其他语言略有不同。当你导入一个命名空间时,你并没有真正将类带入作用域,你只是给命名空间取别名。仅导入一级命名空间绝对没有任何作用。即使你导入了一些东西,你仍然需要引用它最底层的命名空间。

例如,如果你有这个:

foo.php:

namespace Bar\Baz\Biz;

class Foo
{}

以下是您如何使用它:

blah.php:
use Bar\Baz\Biz;

$var=new Biz\Foo();

看看我如何仍然需要使用 Biz 来引用它,即使我已经导入了它?

但是,您可以使用别名来解决这个问题:
blah.php:
use Bar\Baz\Biz\Foo as Foo;

$var=new Foo();

如您所见,我不再需要对其进行限定。

然而不幸的是,PHP 中没有“全部导入”;如果您想执行上述操作,则必须为要导入的每个类添加别名。

关于PHP 命名空间和实现关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1261666/

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