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 相关文章推荐
session 的生命周期是多长
Oct 09 PHP
BBS(php &amp; mysql)完整版(三)
Oct 09 PHP
BBS(php &amp; mysql)完整版(二)
Oct 09 PHP
一个捕获函数输出的函数
Feb 14 PHP
php下判断数组中是否存在相同的值array_unique
Mar 25 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
PHP中把对象转换为关联数组代码分享
Apr 09 PHP
php注册登录系统简化版
Dec 28 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
Nov 02 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
phplot生成图片类用法详解
2015/01/06 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
python 七种邮件内容发送方法实例
2014/04/22 Python
剖析Python的Twisted框架的核心特性
2016/05/25 Python
Python生成密码库功能示例
2017/05/23 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
PHP统计代码行数的小代码
2019/09/19 Python
Python使用configparser库读取配置文件
2020/02/22 Python
五种Python转义表示法
2020/11/27 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
培训讲师邀请函
2014/01/10 职场文书
大学毕业感言50字
2014/02/07 职场文书
母亲节感恩寄语
2014/02/21 职场文书
推广普通话标语
2014/06/27 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
2019各种承诺书范文
2019/06/24 职场文书
微信小程序scroll-view不能左右滑动问题的解决方法
2021/07/09 Javascript
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS