宝哥软件园

PHP命名空间使用示例分析

编辑:宝哥软件园 来源:互联网 时间:2021-08-20

本文用例子说明了PHP名称空间的用法。分享给大家参考,如下:

在讨论名称空间之前,让我们先了解一个问题。

我们在网站的根目录下创建一个文件夹,并在文件夹中创建一个a.php

?phpclass Apple { function get _ into(){ echo '这是A ';}}然后创建一个b.php

?phpclass Apple { function get _ into(){ echo '这是B ';}}创建另一个index.php,想使用Apple的Apple类和index.php的Apple类,所以我们使用require_once作为参考

?phprequire _ once ' a.phprequire _ once ' b.php此时,当我们在浏览器中运行index.php时,我们会看到一条错误消息。无法重新声明Apple类,这意味着我们无法重写Apple类。

如果我们真的需要同时使用它,那么我们可以使用命名空间来解决这个问题。在:之前稍微改变a.php和b.php

a.php

?phpnamespace a b c;类Apple{ function get_into(){ echo '这是A ';}}b.php

?phpnamespace d e f;类Apple{ function get_into(){ echo '这是A ';}}当我们再次刷新index.php时,可以看到没有报告错误,因为这两个Apple类在不同的名称空间中,不存在重写问题。

我们在a.php和b.php实例化了两个类,并调用get_info方法。

?phprequire _ once ' a.phprequire _ once ' b.php$ a=new a b c Apple();$ a-get _ into();$ b=new d e f Apple();$ b-get _ into();这里写图片描述

刷新后,我们可以看到我们已经成功调用了两个类中的方法。然后问题又来了。如果我们需要多次实例化这个类,难道我们不需要每次都有一长串名称空间吗?这使得代码看起来臃肿。我们可以再次修改代码。

?phprequire _ once ' a.phprequire _ once ' b.php使用 a b c 苹果;使用defApple作为Bapple$a=新苹果();$ a-get _ into();$b=新Bapple();$ b-get _ into();在代码中,我们使用use来使用命名空间,但是如果继续使用use defApple显然与上面的代码冲突,我们可以使用as来为Apple在def中设置一个别名,此时$ b=new Bapple();不会有歧义。

在浏览器中运行index.php,您可以看到输出结果是我们所期望的。

更多对PHP相关内容感兴趣的读者可以查看本网站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》、《php常见数据库操作技巧汇总》、0103010

希望本文对PHP编程有所帮助。

更多资讯
游戏推荐
更多+