PHP 命名空间
PHP 命名空间
命名空间是解决两个不同问题的限定符:
- 它们通过对协同工作以执行任务的类进行分组来实现更好的组织
- 它们允许将同一名称用于多个类
例如,您可能有一组描述 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;
...
?>
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>
亲自试一试 »
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
声明的代码都在命名空间内运行,因此可以在没有任何限定符的情况下实例化属于该命名空间的类。 要从命名空间外部访问类,该类需要附加命名空间。
当同时使用来自同一个命名空间的多个类时,使用 namespace
关键字会更容易:
实例
使用 Html 命名空间中的类而不需要 Html\qualifier:
namespace Html;
$table = new Table();
$row = new Row();
亲自试一试 »
$table = new Table();
$row = new Row();
命名空间别名
为命名空间或类提供别名以使其更易于编写会很有用。 这是通过 use
关键字完成的: