PHP |名称空间

与C++一样,PHP命名空间是封装项目的方式,以便可以在没有名称冲突的情况下重用相同的名称。

null
  • 在许多地方,它可以被看作是一个抽象的概念。它允许 重新澄清 在单独的命名空间中使用相同的函数/类/接口/常量函数,而不会出现致命错误。
  • 名称空间是一个分层标记的代码块,其中包含常规PHP代码。
  • 命名空间可以包含有效的PHP代码。
  • 命名空间影响以下类型的代码:类(包括抽象和特征)、接口、函数和常量。
  • 名称空间是使用namespace关键字声明的。

名称空间必须在任何其他代码之前声明为文件顶部的名称空间,只有一个例外:declare关键字。

php

<?php
namespace MyNamespaceName {
// Regular PHP code
function hello()
{
echo 'Hello I am Running from a namespace!' ;
}
}
?>


如果命名空间是全局声明的,那么就声明它 没有 任何名字。

php

<?php
namespace {
// Global space!
}
?>


在一个PHP代码中可以声明多个名称空间。

php

<?php
namespace MyNamespace1 {
}
namespace MyNamespace2 {
}
namespace {
}
?>


命名空间用于避免定义冲突,并在代码库中引入更多灵活性和组织性。和目录一样,名称空间可以包含一个称为子名称空间的层次结构。PHP使用反斜杠作为名称空间分隔符。 例子:

php

<?php
namespace MyNamespaceName;
function hello()
{
echo 'Hello I am Running from a namespace!' ;
}
// Resolves to MyNamespaceNamehello
hello();
// Explicitly resolves to MyNamespaceNamehello
namespace hello();
?>


名称空间中的别名

导入是通过使用“use”关键字实现的。或者,它可以使用“as”关键字指定自定义别名。 例子:

php

<?php
namespace MyNamespaceName;
require 'project/database/connection.php' ;
use ProjectDatabaseConnection as Connection;
$connection = new Connection();
use ProjectDatabase as Database;
$connection = new DatabaseConnection();
?>


可以动态调用命名空间代码,不支持动态导入。

php

<?php
namespace OtherProject;
$title = 'geeks' ;
// This is valid PHP
require 'project/blog/title/' . $title . '.php' ;
// This is not
use ProjectBlog itle $title ;
?>


参考: http://php.net/manual/en/language.namespaces.php

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享