1、命名空间:PHP5.3.0开始,增加namespace命令空间特性。
命名空间将代码划分出不同的区域,不同空间的相同常量名、函数名、类名互不影响。
同一个PHP文件中可以创建多个命名空间。但是规范一个文件只写一个命名空间。
//命名空间代码写在php代码开始处。
//创建一个名为:Home\Controller的命名空间
//表示Home目录下的Controller命名空间,一个Controller命名空间下可以有若干个类
namespace Home\Controller;
2、调用不同命名空间的方法
1:采用完全限定名称
例如:分别定义两个命名空间(可以定义在相同文件中,也可以定义在不同文件中)
//当前MessageBoard命名空间中存在Comment类
namespaceMessageBoard;
classComment{}
//另一个Article命名空间中存在Comment类
namespaceArticle;
classComment{}
------------------------------------------
/* 调用方法 */
//调用当前空间(MessageBoard)的Comment类(非限定名称、直接调用类名)
$comment =newComment();
//调用Article空间的Comment类(完全限定名称、调用绝对路径下的类名)【常用于调用自身类库】
$article_comment =new \Article\Comment();
2:采用use导入命名空间(常用)
//创建一个BBS命名空间
namespace BBS;
//导入另一个命名空间(use 命名空间名\类名)(as 表示别名)
useBlog\Article as List;
//导入其他命名空间后调用其他命名空间的类(限定名称、调用相对路径)【常用于调用自身类库】
$article_comment =new List();
注意:导入命名空间的时候,如果当前空间与导入的命名空间有相同的名字元素会发生致命错误。
4、调用第三方类库【常用于调用第三方类库】
function open() { include "./ThinkPHP/Library/img/Image.php"; // 引入第三方类库
$image = new \Image(); // 实例化类名
$image->open('./1.jpg'); //使用类中的方法 }
附:非限定名称、限定名称、完全限定名称
1.非限定名称,或不包含前缀的类名称,例如 $comment =newComment();。如果当前命名空间是Blog\Article,Comment将被解析为Blog\Article\Comment。
如果使用Comment的代码不包含在任何命名空间中的代码(全局空间中),则Comment会被解析为Comment。
2.限定名称,或包含前缀的名称,例如 $comment =newArticle\Comment();。如果当前的命名空间是Blog,则Comment会被解析为Blog\Article\Comment。
如果使用Comment的代码不包含在任何命名空间中的代码(全局空间中),则Comment会被解析为Comment。
3.完全限定名称,或包含了全局前缀操作符的名称,例如 $comment =new \Article\Comment();。在这种情况下,Comment总是被解析为代码中的文字名(literal name)Article\Comment。
非限定名称 = 文件名 限定名称 = 相对路径 完全限定名称 = 绝对路径 没有定义命名空间的文件都属于公共空间。
--------------------------------------------------------------------
承接网站开发、小程序开发、app开发、商城开发、公众号开发。
百度SEO排名、百度搜索霸屏、软文代写等业务。
联系QQ:2779459018 联系微信:qianxia39