首页 > 解决方案 > PHP 子命名空间的使用

问题描述

PHP 和命名空间。

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

1.php:

namespace App\someNS;

class classname{}

2.php:

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

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

我的假设是命名空间是容器\范围,所以通过包含一个 - 我可以访问它的内容;
我预计use App\someNS将“包括”它。

我知道 someNS\classname() 会起作用,但是如果从命名空间中唯一的“利润”是使用相同名称的变量的选项,我看不到命名空间的巨大优势,如果毕竟我仍然需要使用获得它们的途径......我错过了什么?

标签: phpnamespaces

解决方案


命名空间就像文件系统中的目录和文件一样工作。

你可以进入一个目录并执行一个文件:

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();

您可以在此处找到更多详细信息


推荐阅读