php - PHP 子命名空间的使用
问题描述
PHP 和命名空间。
我假设我误解了它的正确用法/想法..
(请阅读到最后)
我有两个文件:1.php
,2.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() 会起作用,但是如果从命名空间中唯一的“利润”是使用相同名称的变量的选项,我看不到命名空间的巨大优势,如果毕竟我仍然需要使用获得它们的途径......我错过了什么?
解决方案
命名空间就像文件系统中的目录和文件一样工作。
你可以进入一个目录并执行一个文件:
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();
您可以在此处找到更多详细信息
推荐阅读
- beautifulsoup - bs4 库在终端中工作,但在 pycharm 中找不到解析器
- python - 如何在python中将hsv转换为rgb?
- google-docs-api - 更新 Google Docs API 中的 ListProperties
- javascript - 如何使用 d3.js 为世界地图中的岛屿绘制路径
- php - jquery ajax搜索表单div显示的问题
- java - 覆盖方法;返回具有合并参数的类
- c++ - 为什么我的程序只读取文件的最后一行?(C++)
- c++ - 存储在 unsigned int 中的负值
- r - 重新编码组以相应地创建摘要
- android - Android ActivityResult API 未解决的引用错误 registerForActivityResult