轻松上手,快乐学习!

PHP 教程

PHP 教程PHP 简介PHP 下载安装PHP 语法PHP 注释PHP 变量PHP Echo / PrintPHP 数据类型PHP 字符串PHP 数值PHP MathPHP 常量PHP 运算符PHP If...ElsePHP SwitchPHP 循环While 循环Do While 循环For 循环Foreach 循环Break/ContinuePHP 函数PHP 数组索引数组关联数组多维数组数组排序PHP 全局变量$GLOBALS$_SERVER$_REQUEST$_POST$_GETPHP 正则表达式PHP 表单处理PHP 表单验证PHP 表单验证必填字段PHP 表单验证URL/E-mailPHP 表单验证实例PHP 日期和时间PHP IncludePHP 文件处理PHP 文件打开/读取PHP 文件创建/写入PHP 文件上传PHP CookiesPHP SessionsPHP FiltersPHP Filters AdvancedPHP 回调函数PHP JSONPHP 异常处理PHP 什么是 OOPPHP 类和对象PHP 构造函数PHP 析构函数PHP 访问修饰符PHP 继承PHP 类常量PHP 抽象类PHP 接口PHP 特征PHP 静态方法PHP 静态属性PHP 命名空间PHP 可迭代对象MySQL DatabaseMySQL ConnectMySQL Create DBMySQL Create TableMySQL Insert DataMySQL Get Last IDMySQL Insert MultipleMySQL PreparedMySQL Select DataMySQL WhereMySQL Order ByMySQL Delete DataMySQL Update DataMySQL Limit DataPHP XML ParsersPHP SimpleXML ParserPHP SimpleXML - GetPHP XML ExpatPHP XML DOMAJAX IntroAJAX PHPAJAX DatabaseAJAX XMLAJAX Live SearchAJAX PollPHP 实例PHP 编译器PHP 测验PHP 练习

PHP 参考手册

PHP 概述PHP ArrayPHP CalendarPHP DatePHP DirectoryPHP ErrorPHP ExceptionPHP FilesystemPHP FilterPHP FTPPHP JSONPHP KeywordsPHP LibxmlPHP MailPHP MathPHP MiscPHP MySQLiPHP NetworkPHP Output ControlPHP RegExPHP SimpleXMLPHP StreamPHP StringPHP Variable HandlingPHP XML ParserPHP ZipPHP Timezones


PHP 命名空间


PHP 命名空间

命名空间是解决两个不同问题的限定符:

  1. 它们通过对协同工作以执行任务的类进行分组来实现更好的组织
  2. 它们允许将同一名称用于多个类

例如,您可能有一组描述 HTML 表格的类,例如 Table、Row 和 Cell,同时还有另一组描述家具的类,例如 Table、Chair 和 Bed。 命名空间可用于将类组织成两个不同的组,同时还可以防止两个类 Table 和 Table 混淆。


声明命名空间

命名空间在文件开头使用 namespace 关键字声明:

语法

Declare a namespace called Html:

namespace Html;

注释: namespace 声明必须是 PHP 文件中的第一件事。 以下代码无效:

<?php
echo "Hello World!";
namespace Html;
...
?>

此文件中声明的常量、类和函数将属于 Html 命名空间:

实例

在 Html 命名空间中创建一个 Table 类:

<?php
namespace Html;
class Table {
  public $title = "";
  public $numRows = 0;
  public function message() {
    echo "<p>Table '{$this->title}' has {$this->numRows} rows.</p>";
  }
}
$table = new Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>

<?php
$table->message();
?>

</body>
</html>
亲自试一试 »

为了进一步组织,可以嵌套命名空间:

语法

在名为 Code 的命名空间中声明名为 Html 的命名空间:

namespace Code\Html;

使用命名空间

任何遵循 namespace 声明的代码都在命名空间内运行,因此可以在没有任何限定符的情况下实例化属于该命名空间的类。 要从命名空间外部访问类,该类需要附加命名空间。

实例

使用 Html 命名空间中的类:

$table = new Html\Table()
$row = new Html\Row();
亲自试一试 »

当同时使用来自同一个命名空间的多个类时,使用 namespace 关键字会更容易:

实例

使用 Html 命名空间中的类而不需要 Html\qualifier:

namespace Html;
$table = new Table();
$row = new Row();
亲自试一试 »

命名空间别名

为命名空间或类提供别名以使其更易于编写会很有用。 这是通过 use 关键字完成的:

实例

给命名空间一个别名:

use Html as H;
$table = new H\Table();
亲自试一试 »

实例

给一个类一个别名:

use Html\Table as T;
$table = new T();
亲自试一试 »