新蒲京200.c软件下载-app官网网址 > 问答 >

而后许多存世PHP类库以至框架都初阶接济它

命名空间

如何是命名空间吧?

取名空间(爱尔兰语:Namespace)表示标志符(identifier)的可知范围。三个标志符可在八个命名空间中定义,它在差别命名空间中的含义是互不相干的。那样,在二个新的命名空间中可定义任何标志符,它们不会与别的原来就有的标志符产生冲突,因为本来就有的定义都远在其余命名空间中。

不问可以看到说来定名空间是为了消亡差别库在同三个遇到下行使时现身的命名冲突。举个例子小编本人有叁个函数名字为A,但是系统已经有一个A函数了,那就能够产出冲突。

PHP中的命名空间

PHP从5.3本子早先引进了命名空间,之后好多共处PHP类库以致框架都开始帮衬它。那么PHP的命名空间怎么用吧?

概念命名空间

下边是三个概念命名空间的事例

<?php    
//file a.php
namespace A;

const test = 'Atest'; 

function test() { 
    return __FUNCTION__; 
}

class Test{
    public function __construct(){
        return __METHOD__;
    }
}
?>

地点例子中正是二个卓绝的命名空间定义方法,独有constfunction,class受命名空间的牢笼。

利用命名空间

运用命名空间的艺术如下:

<?php 
namespace B;
use A;

const test = 'Btest';
function test() { 
    return __FUNCTION__; 
}

class Test{
    public function __construct(){
        return __METHOD__;
    }
}

include "a.php";//必须包含A命名空间的文件

// 完全限定
// `Btest`从绝对位置查找输出,如果是全局函数则`test`
echo Btest;   //输出Btest

// 限定名称  
// 这里已经通过`use A`申明了在这个文件可以通过`A...`使用A命名空间的函数
echo Atest;    //输出Atest

// 非限定名称
// 非限定名称的函数`test`会从当前命名控件查找,即B
echo test;      //输出Btest

// namespace关键字代表当前命名空间
echo namespace/test;
?>

首先要介意的是命名空间只起注明成效,也便是在利用了命名空间的时候照旧得把那一个命名空间注解的不得了文件满含进来。在运用中能够通过__NAMESPACE__来查看当前定名空间。

越来越多内容能够查阅PHP官方文档

自行加载

各个文件既要申明命名控件又要手动include是不行不智能的作业,所以在谐和的PHP系统也许框架中能够运用自动加载本领,让系统和谐去找

最简单易行的办法是采用函数__autoload函数,不过那个函数只可以在非命名控件下定义,约等于全局情形下:

function __autoload($class) {
  $dir = './';
  set_include_path(get_include_path().PATH_SEPARATOR.$ids_dir);
  $class = str_replace('\', '/', $class) . '.php'; 
  require_once($class); }

万风流洒脱在早原来就有了命名空间的类中,能够接受函数spl_autoload_register来注册二个类中的方法来代替__autoload

下一篇:没有了