提问者:小点点

PHP子名称空间用法


PHP和名称空间。

我假设我误解了它的正确用法/思想。
(请阅读到最后)
我有两个文件:1.php2.php

文件1:

namespace App\someNS;

class classname{}

class2':

namespace App;
include_once("1.php");
use App\someNS; // tried to comment it also, not working

$ x = new classname();
// this fails..

我的假设是名称空间是容器\scope,因此通过包含一个-我可以访问它的内容;
我预期useapp\somens将“包含”它。

我知道somens\classname()可以工作,但如果名称空间的唯一“好处”是为变量使用相同名称的选项,如果毕竟我仍然需要使用路径来获取它们,那么我看不到名称空间的巨大优势。。。 我错过了什么?


共1个答案

匿名用户

命名空间的工作方式与文件系统中的目录和文件类似。

您可以输入一个目录并执行一个文件:

cd /var/www/project

phpunit SomeTest

也可以执行通过整个路径的文件:

/var/www/project/phpunit SomeTest

在您的示例中,可以使用:

//class2
namespace App;

include_once('1.php');
use App\someNS\classname;

$x = new classname();

//class2
namespace App;

include_once('1.php');
use App\someNS;

$x = new someNS\classname();

或者甚至

//class2
namespace App;

include_once('1.php');

$x = new someNS\classname();

您可以在这里找到更多详细信息