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 相关文章推荐
BBS(php &amp; mysql)完整版(一)
Oct 09 PHP
php操作SVN版本服务器类代码
Nov 27 PHP
PHP Global变量定义当前页面的全局变量实现探讨
Jun 05 PHP
php递归删除目录下的文件但保留的实例分享
May 10 PHP
PHP之uniqid()函数用法
Nov 03 PHP
php的ddos攻击解决方法
Jan 08 PHP
10款实用的PHP开源工具
Oct 23 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
Nov 18 PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
PHP 的Opcache加速的使用方法
Dec 29 PHP
laravel利用中间件做防非法登录和权限控制示例
Oct 21 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页面局部刷新功能的实现小结
2013/06/21 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
js中的DOM模拟购物车功能
2017/03/22 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
对Python 内建函数和保留字详解
2018/10/15 Python
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
WxPython建立批量录入框窗口
2019/02/27 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
Python jieba库分词模式实例用法
2021/01/13 Python
您的网上新华书店:文轩网
2016/08/24 全球购物
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
与世界上最好的跑步专业品牌合作:Fleet Feet
2019/03/22 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
上海期货面试题
2014/01/31 面试题
求职信范文英文版
2014/01/05 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
爱护公物演讲稿
2014/09/09 职场文书
2015年青年志愿者工作总结
2015/05/20 职场文书