PHP 命名空间
PHP 命名空间
命名空间是解决两个不同问题的限定符
- 它们允许通过将一起工作的类分组来更好地组织
- 它们允许对多个类使用相同的名称
例如,您可能有一组类来描述 HTML 表格,例如 Table、Row 和 Cell,同时还可能有一组类来描述家具,例如 Table、Chair 和 Bed。命名空间可以用来将类组织成两个不同的组,同时还可以防止两个类 Table 和 Table 混淆。
声明命名空间
命名空间在文件开头使用 namespace
关键字声明
语法
声明一个名为 Html 的命名空间
<?php
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>表格 '{$this->title}' 有 {$this->numRows} 行。</p>";
}
}
$table = new Table();
$table->title = "我的表格";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
自己试试 »
为了进一步组织,可以嵌套命名空间。
语法
在名为 Code 的命名空间中声明一个名为 Html 的命名空间。
<?php
namespace Code\Html;
?>
使用命名空间
任何在 namespace
声明之后的代码都在命名空间内运行,因此属于命名空间的类可以在没有限定符的情况下实例化。 要从命名空间外部访问类,类需要附加命名空间。
当同时使用来自同一个命名空间的多个类时,使用 namespace
关键字会更容易。
示例
使用 Html 命名空间中的类,无需 Html\ 限定符。
<?php
namespace Html;
$table = new Table();
$row = new Row();
?>
自己试试 »
命名空间别名
为命名空间或类指定别名可能会有用,以便更容易编写代码。 这是使用 use
关键字完成的。