怎么在PHP项目中命名空间

  介绍

这篇文章将为大家详细讲解有关怎么在PHP项目中命名空间,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

PHP有什么用

PHP是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及PHP自创新的语法,主要用来做网站开发,许多小型网站都用PHP开发,因为PHP是开源的,从而使PHP经得久不衰。

<>强命名空间的定义

命名空间是一个容器,这个容器主要是为了识别其下的类和函数。一旦定义了命名空间,它下面的代码就属于这个命名空间了,所以命名空间的定义要在代码的最开始行。

对于同一个包来说,同一个命名空间或者子命名空间的代码没有必要在一个PHP文件中定义,子命名空间下的代码是为了完成特定模块的工作,组合起来就是一个包完整的命名空间。

假如编写的代码没有定义命名空间,那说明它属于全局的命名空间(\符号),所以能够直接引用类或者函数(不用添加\符号)。

<强>引用命名空间标识符的三种方式

(1)完全限定名称

类似于操作系统上的绝对路径,而且是完整的路径,所以在理解的时候不会有误解。

比如在新\ \ B \ C,那么C就被会解析到\ B命名空间下的C类。

(2)限定名称

类似于操作系统上的相对路径,它包含部分名字并被引用到当前的命名空间。

比如B \ C()在命名空间一个下调用,则最终引用的命名空间就是\ B \ C ()。

(3)不合格名称

类似于限定名称,但是没包括子命名空间。

比如C()在命名空间\ B下调用,则最终引用的命名空间就是\ B \ C ()。

<强>通过一个例子来说明三种引用方式:

namespace  \例子;   require_once “fnction.php";   class  ClassA  {}   function 函数(),{}//完全限定名称   \ \例子函数();   \ \ B \例子函数();,//限定名称   B \函数();,//指向,\ B \ \例子函数();//非限定名称   $ test =, new  ClassA ();,//resolves 用\ \ ClassA示例   函数(),,//指向,\ \函数例子

<强>注意:

?在一个名称空间,假如在当前范围没有发现函数和常量的定义,PHP不会报错。而是去全局命名空间中寻找。

?在一个名称空间,假如在当前范围没有发现类的定义,则PHP会直接报错,不会去全局域中找对应的类,所以假如你需要引用一个内部或用户自定义的类,必须使用完全限定名称。

先举个简单的例子,首先编写一段代码(定义在命名空间下),命名为函数。php:

namespace  Foo \酒吧\次级名称空间;   const  FOO =, 1;   function  foo (),   {   return 才能“foo \ r \ n";   }   class  foo    {   static 才能;function  staticmethod ()   {才能   ,,,return  __METHOD__ 只“\ r \ n",;   ,,}   function 才能;foofunction ()   {才能   ,,,return  __METHOD__ 只“\ r \ n",;   ,,}   }

再编写一段代码测试。php,也是处于命名空间之下的代码:

namespace  secondsp;   include  & # 39; function.php& # 39;;   class  foo   {   function 才能;foofunction ()   {才能   ,,,return  __METHOD__ 只“\ r \ n",;   ,,}   }   function  is_file(文件)   {   return 才能;true ;   }//非限定名称:实例化secondsp \ foo类对象   $ obj =, new  foo,   echo  obj→美元foofunction ();//实例化Foo \酒吧\次级名称空间\ foo 类对象   obj 美元;=,new  Foo \酒吧\次级名称空间\ foo ;   echo  obj→美元foofunction ();//代码会报的错,在命名空间内部,假如无法找到当前命名空间下的类,则会报的错//obj 美元;=,new  ArrayObject(数组(1)),,   $ obj =, new  \ ArrayObject(数组(1)),,//在命名空间内部,假如无法找到当前命名空间下的函数或者常量,则会寻找,native 函数   echo  strlen (“nihao");   ,//引用当前命名空间下的函数   var_dump (is_file(& # 39;你好# 39;));//真实//引用全局函数   var_dump (\ is_file(& # 39;你好# 39;)),,//假

<>强导入,别名

假如要使用的命名空间层级很长且数量很多,那么在使用的时候特别麻烦,所以可以使用使用关键字导入命名空间,类,常量,函数等,然后可以使用它们直接引用完整的名称。而别名关键字可以给导入的类和函数等重命名。

怎么在PHP项目中命名空间