PHP命名空间用法实例分析


Posted in PHP onSeptember 04, 2019

本文实例讲述了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命名空间用法实例分析

刷新之后可以看到我们成功地调用了两个类中的方法。那么问题又来了,如果我们需要多次实例化这个类,岂不是每次都要一长串的命名空间?这样看起来代码十分臃肿。我们可以对代码再做修改。

<?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,可以看到输出的结果就是我们预期的结果。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
随机广告显示(PHP函数)
Oct 09 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
Dec 06 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
php中解析带中文字符的url函数分享
Jan 20 PHP
php中smarty区域循环的方法
Jun 11 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
yii2利用自带UploadedFile实现上传图片的示例
Feb 16 PHP
PHP关于foreach复制知识点总结
Jan 28 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
Yii框架的布局文件实例分析
Sep 04 #PHP
使用Laravel中的查询构造器实现增删改查功能
Sep 03 #PHP
Yii框架实现对数据库的CURD操作示例
Sep 03 #PHP
Yii框架通过请求组件处理get,post请求的方法分析
Sep 03 #PHP
laravel 配置路由 api和web定义的路由的区别详解
Sep 03 #PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 03 #PHP
解决Laravel blade模板转义html标签的问题
Sep 03 #PHP
You might like
如何对PHP程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
建立动态的WML站点(一)
2006/10/09 PHP
PHP中删除变量时unset()和null的区别分析
2011/01/27 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
javascript Object与Function使用
2010/01/11 Javascript
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
vue实现数据控制视图的原理解析
2020/01/07 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
Python教程之全局变量用法
2016/06/27 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
对python 合并 累加两个dict的实例详解
2019/01/21 Python
python文字转语音的实例代码分析
2019/11/12 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
高中班长自我鉴定
2013/12/20 职场文书
医院门卫岗位职责
2013/12/30 职场文书
会务接待方案
2014/02/27 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
供用电专业求职信
2014/07/07 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
宣传委员竞选稿
2015/11/19 职场文书
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python