我想知道如果我使用命名空间,为什么应该使用require_once?
如果我必须使用require_once,那么“use”关键字和命名空间有什么意义呢?
(我理解这是和Java import、packages不同的思维方式)
Mat*_*lin 10
命名空间/使用(导入类/命名空间)和 require/include(_once 或 not)函数族之间没有关系。
如果您确实使用与 PSR-0 或 PSR-4 兼容的自动加载(例如 Composer 的自动加载器),那么您不需要使用 require/include 来将某些类添加到您的代码中。
命名空间允许您将代码划分为内存中的不同部分,以防止类/函数名称发生冲突。Use 是一个关键字,它将现有的命名空间实体导入到文件的当前命名空间范围中(每个文件可能只有一个命名空间),这将使您不必提供类或函数名称的完整路径:
namespace \My\Namespace\Path;
use \My\Other\Namespace\Path;
use \My\Last\Namespace\ClassName;
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用当前命名空间中 \My\Other\Namespace\Path 中的任何内容,而无需指定整个路径。