PHP 命名空间和包含文件

Pat*_*ick 7 php namespaces

我有以下 PHP 代码:

<?php
namespace my_ns;

class dummy
{

function do_print(){echo "printing...";}    
}

$obj_dummy=new dummy();
$obj_dummy->do_print();
?>
Run Code Online (Sandbox Code Playgroud)

这一切正常,

但是,如果我将类放在单独的包含文件中(例如 class.dummy.php),则页面上的代码如下所示:

<?php
namespace my_ns;
include ("class.dummy.php");
$obj_dummy=new dummy();
$obj_dummy->do_print();
?>
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

类“my_ns\dummy”未在...中找到

默认情况下如何确保(所有)包含文件自动添加到给定的命名空间?

Han*_*nky 6

包含命名空间的文件必须在任何其他代码之前在文件顶部声明命名空间 - 但有一个例外:declare 关键字。

来源

也将其添加到您的包含文件中。

namespace my_ns;
Run Code Online (Sandbox Code Playgroud)

之后,您的代码就可以正常工作了。

参考

  • 只是问...如果一个文件要包含在多个名称空间中,是否有解决方法?我怀疑不是,我怀疑我应该停止使用这么多包含! (3认同)