PHP命名空间

王林
发布: 2024-08-29 13:00:16
原创
786 人浏览过

PHP 中的命名空间类似于 C++ 中的命名空间,通过重用名称来封装项目,以避免名称冲突。在许多情况下,它也被视为一个抽象概念。它允许在不同的命名空间中重新声明相同的类或接口或函数或常量函数,而不会收到致命错误。该命名空间是一个按层次标记的代码块,其中包含普通的 PHP 代码。它由有效的 PHP 代码组成。此外,它还会影响类、函数、常量和接口等代码类型。命名空间是使用关键字namespace来声明的。

广告 该类别中的热门课程 PHP 开发人员 - 专业化 | 8 门课程系列 | 3次模拟测试

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

语法:

namespace sample;
登录后复制

这里声明了一个命名空间示例。

与其他 PHP 标识符类似,命名空间也应该遵循一些规则。也就是说,命名空间应以下划线或字母开头,后跟字母、下划线或数字。

命名空间在 PHP 中如何工作?

让我们将命名空间想象为一个橱柜,我们可以在其中存放所有物品,例如衣服、配饰等。对于每个人来说,都会有一个单独的橱柜来存放他们的物品。为了识别每个人的橱柜,可以给每个人贴上标签,这样就不会发生任何混乱。过去,程序员在常量、类和函数中使用下划线分隔代码库。这类似于给每个人的物品贴上标签并将它们放在一个大柜子里。即使有条理,效率也不会高。

在这种情况下,命名空间的概念就出现了。相同的类、接口、函数和常量可以在不同的命名空间中声明,而不会出现任何致命错误。基本上,命名空间是一个按层次标记的代码块,其中包含普通的 PHP 代码。

正如我们已经提到的,PHP 中的命名空间通过重用名称来封装项目,以避免名称冲突。

例如,考虑下面提到的 PHP 程序。

代码:

<?php
namespace sample ;
function func()
{
echo ' Never give up! Keep trying . . . ' ;
}
// Resolves to the function
func() ;
?>
登录后复制

可以看到存在一个函数 func,并且它在执行代码时打印一条文本。

随着 PHP 代码库大小的增加,有可能会无意中重用已声明的类名或函数。如果添加第三方组件和插件,问题会更加严重。此外,名称冲突问题可以借助命名空间来解决。 PHP 常量、函数和类可以聚集到命名空间库中。这些命名空间可以遵循特定的层次结构,类似于计算机上文件系统中可用的文件夹。子命名空间这个概念对于安排项目结构非常有用。如果项目需要访问数据库,所有与数据库相关的代码,例如数据库的异常、连接处理程序,都可以保存在名为 DB 的子命名空间中。

为了保持灵活性,最好将子命名空间保存在子目录中。这激发了项目结构,并使遵循标准 PSR-0 的自动加载器变得容易使用。

通常,PHP 中会使用反斜杠作为命名空间分隔符。

样本子样本
样本子样本样本
CollegeProjCommonWidget

在全局声明命名空间的情况下,可以不使用任何名称来声明它,如下所示。

代码:

<?php
namespace {
// Global . . . !
}
?>
登录后复制

在某些情况下,一个 PHP 代码中可以使用多个命名空间,如下所示。

代码:

<?php
namespace sam {
}
namespace samp {
}
namespace {
}
?>
登录后复制
注意: 需要注意的是,命名空间必须在 PHP 程序中首先声明。如果下面给出任何代码,它将被检测为无效,因为最初未给出命名空间。

代码:

<?php
echo "Never Give up ! " ;
namespace Html ;
. . .
?>
登录后复制

PHP 命名空间示例

下面给出的是 PHP 命名空间的示例:

示例#1

使用命名空间并隐式和显式调用函数的 PHP 程序。

代码:

<?php
namespace sample;
function func()
{
echo 'Never give up! Keep trying. . .';
}
// Resolves to the function
func();
// Explicitly resolves to the function
namespace\func();
?>
登录后复制

输出:

PHP命名空间

在程序中,首先创建了一个命名空间示例。之后,可以看到定义了一个函数func,并且在执行代码时打印了一条文本。由于函数被隐式和显式调用,文本被打印两次。

假设命名空间是在定义函数之后声明的,如下所示。那么,会发生什么呢?

代码:

<?php
function func()
{
echo 'Never give up! Keep trying. . .';
}
// Resolves to the function
func();
namespace sample;
// Explicitly resolves to the function
namespace\func();
?>
登录后复制

Yes…. An error will be displayed, as shown below. That is, namespace should be defined at the beginning of the program.

Output:

PHP命名空间

Example #2

PHP program that uses a namespace and calls a function for printing table details.

Code:

<?php
namespace Html;
class sampletable {
public $heading= "";
public $cntrows= 0;
public function fnc() {
echo "<p> The Table used is '{$this->heading}' that has {$this->cntrows} different rows. . . .</p>";
}
}
$tb= new sampletable ();
$tb->heading= " Students ";
$tb->cntrows= 8 ;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$tb->fnc();
?>
</body>
</html>
登录后复制

Output:

PHP命名空间

In the program, a namespace Html is created first. After that, a class sampletable is created with variables heading, cnt rows. A function func is also present, which contains a text. Heading students and 8 as count of rows were given after that. On executing the code, the line gets printed with the table name and number of rows.

Conclusion

Namespaces in PHP is similar to namespaces in C++ that encapsulates items by reusing names in order to avoid name conflicts. In this article, different aspects such as syntax, working, and examples of size() functions are explained in detail.

以上是PHP命名空间的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
php
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板