PHP命名空间用法实例分析
发布:smiling 来源: PHP粉丝网 添加日期:2021-12-15 09:50:46 浏览: 评论:0
本文实例讲述了PHP命名空间用法,分享给大家供大家参考,具体如下:
在讲解命名空间之前,我们先了解一个问题。
我们在网站根目录创建一个文件夹,在文件夹中创建a.php
- <?php
- class Apple{
- function get_into(){
- echo "this is A";
- }
- }
然后再创建一个b.php
- <?php
- class Apple{
- function get_into(){
- echo "this is B";
- }
- }
再创建一个index.php,并且想要在index.php中同时使用a.php和b.php中的Apple类,所以我们用require_once进行引用
- <?php
- require_once "a.php";
- require_once "b.php";
此时我们在浏览器中运行index.php,就会看到一行错误信息。Cannot redeclare class Apple,意思是我们不能重写Apple类。
而如果我们确实需要同时用到时,这时候就可以运用到命名空间解决这个问题,将a.php和b.php稍微更改:
a.php
- <?php
- namespace a\b\c;
- class Apple{
- function get_into(){
- echo "this is A";
- }
- }
b.php
- <?php
- namespace d\e\f;
- class Apple{
- function get_into(){
- echo "this is A";
- }
- }
这时我们重新刷新index.php,可以看到已经没有报错了,因为这两个Apple类在不同的命名空间中,不存在重写问题了。
我们分别实例化a.php和b.php中的两个类,分别调用其中的get_info方法。
- <?php
- require_once "a.php";
- require_once "b.php";
- $a = new \a\b\c\Apple();
- $a->get_into();
- $b = new \d\e\f\Apple();
- $b->get_into();
刷新之后可以看到我们成功地调用了两个类中的方法。那么问题又来了,如果我们需要多次实例化这个类,岂不是每次都要一长串的命名空间?这样看起来代码十分臃肿。我们可以对代码再做修改。
- <?php
- require_once "a.php";
- require_once "b.php";
- use \a\b\c\Apple;
- use d\e\f\Apple as Bapple;
- $a = new Apple();
- $a->get_into();
- $b = new Bapple();
- $b->get_into();
在代码中我们使用了use来使用命名空间,但是如果继续使用use \d\e\f\Apple显然和上面一行代码产生了冲突,我们可以使用as对\d\e\f中的Apple设置一个别名,这个时候$b = new Bapple();就不会产生二义性了。
在浏览器中运行index.php,可以看到输出的结果就是我们预期的结果。
Tags: PHP命名空间
- 上一篇:php中的钩子理解及应用实例分析
- 下一篇:浅析PHP7 的垃圾回收机制
相关文章
- ·php命名空间学习笔记(2014-06-13)
- ·php中命名空间namespace用法介绍(2015-05-09)
- ·php命名空间学习详解(2020-09-27)
- ·PHP命名空间(Namespace)简明教程(2021-02-11)
- ·PHP命名空间(namespace)的使用基础及示例(2021-04-02)
- ·PHP中的命名空间相关概念浅析(2021-05-08)
- ·PHP使用Memcache时模拟命名空间及缓存失效问题的解决(2021-07-12)
- ·PHP命名空间namespace及use的简单用法分析(2021-10-22)
- ·PHP命名空间与自动加载类详解(2021-10-27)
- ·php命名空间设计思想、用法与缺点分析(2021-12-05)
- ·PHP命名空间定义与用法实例分析(2021-12-11)
- ·php的命名空间与自动加载实现方法(2021-12-12)
- ·PHP命名空间与自动加载机制的基础介绍(2021-12-12)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)