Php/php namespaces
来自菜鸟教程
PHP命名空间
PHP命名空间
命名空间是解决两个不同问题的限定符:
- 通过将可一起执行任务的类分组,它们可以实现更好的组织
- 它们允许同一名称用于多个类别
例如,您可能有一组描述HTML表的类,例如Table,Row和Cell,同时还具有另一组描述家具的类,例如Table,Chair和Bed。命名空间可用于将类组织为两个不同的组,同时还可以防止两个类Table和Table混淆。
声明命名空间
命名空间在文件的开头使用
namespace
关键词:
句法
声明一个名为Html的名称空间:
namespace Html;
注意:
A
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();