完全限定类名
完全相对类名是以\
开头的,比如\silai\controller\HomeController
,不以\
开头的类名是相对类名,比如controller\ArticleController
,那么相对指的是相对谁呢,相对用namespace
关键字声明的命名空间。
<?php
namespace silai;
// 实际上是指`\silai\controller\ArticleController`
controller\ArticleController;
// 这个是完全限定类
\foo\bar\User;
命名空间前缀
命名空间前缀是我们自己指定一的部分命名空间,比如这个命名空间,\silai\framework\controller
,我们可以指定\silai
这一部分作为一个前缀,也可以指定\silai\framework
这一部分作为前缀,甚至指定\silai\framework\controller
作为前缀。
基目录
指定了命名空间前缀后,应该再指定这个前缀的基目录,可以指定一个或多个基目录。比如上面的前缀\silai
,指定它对应目录C:\silai
;前缀\silai\framework
对应D:\project\silai\framework
。
类的定义文件
如果命名空间前缀\silai
对应基目录C:\silai
,那么类\silai\Request
应该怎么定义,定义文件又应该存放在哪里呢?定义如下:
<?php
namespace silai;
class Request
{
}
文件名应该是Request.php
,文件应该存放在C:\silai\Request.php
。
对于类\silai\web\Response
又该怎样呢,首先这个类多了一个子命名空间web
,那么默认情况下这个类应该放在C:\silai\web
目录下,如果不想放在这里,可以指定\silai\web
命名空间前缀对应其他目录。
结束语
研究透彻PSR-4规范,是学习PHP的基础。
可以扫描二维码加小程序,观看实现符合PSR-4自动加载的视频教程。
思籁教育Lite小程序
网友评论