命名空间(在 PHP 中)实际上只是防止项目中类之间命名冲突的一种方式。它们以名为“Zend_Controller_Action_Helper”之类的类的形式使用了一段时间(在正式支持之前)。PHP5.3 引入“真正的”命名空间实际上只是意味着我们现在可以通过“使用”命名空间在我们的代码中使用简短易读的名称。
例如。
文件:系统/数据库.php
namespace MyProject;
class Database {
// ...
}
文件 public/index.php
require_once '../system/database.php';
// here we have to use the fully qualified name of the Database class,
// this is similar to the old unofficial underscore method.
$db = \MyProject\Database::connect();
文件:public/index2.php
require_once '../system/database.php';
use MyProject\Database;
// here we can simply use "Database" because the "use" statement says:
// for this file we are using the "Database" class from the "MyProject" namespace
$db = Database::connect();
命名空间仅按照约定(和自动加载)与目录相关,它们本身不会改变包含和使用类的方式。