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 相关文章推荐
PHP4之COOKIE支持详解
Oct 09 PHP
全文搜索和替换
Oct 09 PHP
我的论坛源代码(五)
Oct 09 PHP
php mssql 时间格式问题
Jan 13 PHP
PHP如何解决网站大流量与高并发的问题
Jun 25 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 PHP
PHP中if和or运行效率对比
Dec 12 PHP
php实现概率性随机抽奖代码
Jan 02 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
Oct 13 PHP
详谈phpAdmin修改密码后拒绝访问的问题
Apr 03 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 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中file_get_contents高?用法实例
2014/09/24 PHP
php+mysql数据库实现无限分类的方法
2014/12/12 PHP
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
Expandable &quot;Detail&quot; Table Rows
2007/08/29 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
python求众数问题实例
2014/09/26 Python
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
详解Python中with语句的用法
2015/04/15 Python
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
详解如何使用Python编写vim插件
2017/11/28 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
Python KMeans聚类问题分析
2018/02/23 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
大学生个人简历中的自我评价
2013/12/27 职场文书
医院门卫岗位职责
2013/12/30 职场文书
大学生旷课检讨书
2014/01/22 职场文书
学生会部长竞聘书
2014/03/31 职场文书
英文推荐信格式范文
2014/05/09 职场文书
python中如何对多变量连续赋值
2021/06/03 Python
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript