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 相关文章推荐
第十四节--命名空间
Nov 16 PHP
PHP 5.0对象模型深度探索之类的静态成员
Mar 27 PHP
apache+php完美解决301重定向的两种方法
Jun 08 PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 PHP
解析php中获取系统信息的方法
Jun 25 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
php判断文件上传类型及过滤不安全数据的方法
Dec 17 PHP
PHP写的简单数字验证码实例
May 23 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
tp5框架无刷新分页实现方法分析
Sep 26 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
Oct 16 PHP
php+layui数据表格实现数据分页渲染代码
Oct 26 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中sprintf与printf函数的用法及区别
2016/01/08 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
jQuery读取和设定KindEditor值的方法
2013/11/22 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
2017/04/19 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
详细解析Python当中的数据类型和变量
2015/04/25 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
python实现人机五子棋
2020/03/25 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
大学生怎样写好自荐信
2014/02/25 职场文书
给学校的建议书范文
2014/05/15 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
员工工作自我评价
2014/09/26 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
爱国主义电影观后感
2015/06/18 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
Python关于OS文件目录处理的实例分享
2021/05/23 Python
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers