当调用使用名称空间的类时,是否可以避免指定名称空间



我有一个不实现名称空间的旧框架。如果我试图慢慢引入名称空间,首先在类声明的顶部声明一个名称空间,那么该类的任何调用现在都将失败,因为它不是通过其名称空间调用的。尽管类文件已经包含在内,而且PHP不需要(或者我认为(知道名称空间。

PHP似乎并不关心它是否能够找到一个名为Foo的类,因为如果Foo在名称空间下,那么它总是要求您也必须指定名称空间。

作为一个简单的测试,我把它放在一个文件中:

<?php
namespace Test;
class Foo {
function bar(): void {
print "Hello world.";
}
}

这是另一个:

<?php
include "Foo.php";
$foo = new Foo;
$foo->bar();

它给了我以下错误:

致命错误:未捕获错误:找不到类"Foo">

所以我的问题是,是否可以避免这种行为(可能有一些配置选项(,以缓解从不使用名称空间的框架到使用名称空间框架的缓慢过渡,或者在它可用之前,我是否必须同时替换所有类的所有调用?有什么巧妙的替代方案吗?

您需要提供;路径";你们班的

<?php
use TestFoo;
include "foo.class.php";
$foo = new Foo;
$foo->bar();

我看不到其他解决方案。。。

有关使用的详细信息:https://www.php.net/manual/en/language.namespaces.importing.php

您丢失了名称空间:(

$foo = new TestFoo();

最新更新