我有一个不实现名称空间的旧框架。如果我试图慢慢引入名称空间,首先在类声明的顶部声明一个名称空间,那么该类的任何调用现在都将失败,因为它不是通过其名称空间调用的。尽管类文件已经包含在内,而且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();