PHP和名称空间。
我假设我误解了它的正确用法/思想。
(请阅读到最后)
我有两个文件:1.php
,2.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()可以工作,但如果名称空间的唯一“好处”是为变量使用相同名称的选项,如果毕竟我仍然需要使用路径来获取它们,那么我看不到名称空间的巨大优势。。。 我错过了什么?
命名空间的工作方式与文件系统中的目录和文件类似。
您可以输入一个目录并执行一个文件:
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();
您可以在这里找到更多详细信息