PHP 命名空间 ( namespace )

PHP PHP 命名空间(namespace)是 PHP 5.3 新加入的功能,用来解决一下两类问题

  1. 开发者自定义的类/函数/常量等和 PHP 内建的类/函数/常量或第三方类/函数/常量之间的名字冲突

  2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性

如果你学过 C#Java,那命名空间就不算什么新事物

定义命名空间

PHP 通过关键字 namespace 定义一个命名空间

一般情况下,PHP 语言的所有常量、类和函数名都放在全局空间下,就和 PHP 支持命名空间之前一样

但如果一个文件中包含命名空间,则文件的头部,在其它所有代码之前声明命名空间

语法

PHP 使用 namespace 关键字声明命名空间的语法格式如下

<?php 
namespace MyProject;  

// ... 代码 ...

或者

<?php 
namespace MyProject3 {  
 // MyProject3 命名空间中的PHP代码    
}

我们也可以在同一个文件中定义多个不同的命名空间

<?php  
namespace MyProject1;  
// MyProject1 命名空间中的PHP代码  

namespace MyProject2;  
// MyProject2 命名空间中的PHP代码    

但我们不推荐你这么做,因为这样自动加载机制就会失效

在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句

<?php
declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码
namespace MyProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}

namespace { // 全局代码
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}

所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前

因此以下代码会出现语法错误

<html>
<?php
namespace MyProject; // 命名空间前出现了“<html>” 会致命错误 - 命名空间必须是程序脚本的第一条语句
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.