公告:
  • 要报名培训 PHP 的同学抓紧时间了,黎老师手把手教学,现在报名白菜价了 [2017-08-25]

完全限定类名

完全相对类名是以\开头的,比如\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的基础。

发表评论:(支持 Markdown 语法)
访客评论(0):