我正在开发一个使用命名空间的php系统。
我有以下代码(显然,摘要).... 一个位置的类,目录为Foo \ Bar \ fubar.php
<?php
namespace Foo\Bar;
class fubar
{...
我的另一个.php ......
<?php
use Foo\Bar;
use Foo\Bar\fubar;
class adventurer{
$doomChickens = new fubar();
}
现在,当我检查错误日志时,我得到了......
PHP致命错误:未找到类'Foo \\ Bar \\ fubar'。
我是维护者,不是原作者,但总的来说,我是使用的类型包括&amp;需要而不是命名空间。
什么样的错误可能导致双斜线?这可能是我的问题的根源吗?
答案 0 :(得分:2)
这不是错误,它只是PHP打印出来的方式。您可能知道,对于新行,\n
等字符串存在转义序列,而对于制表符,则为\t
。好吧,\\
是\
的转义序列。
PHP还会从字面上解释无效的转义序列,因此Foo\Bar
只是因为\B
不是有效的转义序列。
作为参考,转义序列仅用双引号字符串解析,而不是单引号字符串。
至于解决实际问题,您需要明确include
或require
该文件或使用an autoloader。最常见的是PSR-0和PSR-4自动加载程序。
顺便说一句,use Foo\Bar;
行是不必要的。
第一个解决方案如下:
<?php
require 'path/to/other/class.php';
use Foo\Bar\fubar;
class adventurer{
$doomChickens = new fubar();
}