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 解压rar文件及zip文件的方法
May 05 PHP
Yii中使用PHPExcel导出Excel的方法
Dec 26 PHP
PHP将session信息存储到数据库的类实例
Mar 04 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
编写PHP脚本过滤用户上传的图片
Jul 03 PHP
YII视图整合kindeditor扩展的方法
Jul 13 PHP
PHP读取XML格式文件的方法总结
Feb 27 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
PHP中一个有趣的preg_replace函数详解
Aug 15 PHP
Laravel实现搜索的时候分页并携带参数
Oct 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下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
PHP笔记之:日期函数的使用介绍
2013/04/24 PHP
浅谈php中mysql与mysqli的区别分析
2013/06/10 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
Javascript中的常见排序算法
2007/03/27 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
JS中Object对象的原型概念基础
2018/01/29 Javascript
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
Python实现Dijkstra算法
2018/10/17 Python
Django 多环境配置详解
2019/05/14 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
Python处理session的方法整理
2019/08/29 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
客户代表自我评价范例
2013/09/24 职场文书
会计专业毕业生自荐信范文
2013/12/20 职场文书
关于责任的演讲稿
2014/05/20 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
陕西导游词
2015/02/04 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
外出考察学习心得体会
2016/01/18 职场文书
外出培训学习心得体会
2016/01/18 职场文书