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 相关文章推荐
WINDOWS 2000下使用ISAPI方式安装PHP
Sep 05 PHP
使用PHP制作新闻系统的思路
Oct 09 PHP
在PHP中实现Javascript的escape()函数代码
Aug 08 PHP
php xml 入门学习资料
Jan 01 PHP
php curl_init函数用法
Jan 31 PHP
PHP中使用smarty生成静态文件的例子
Apr 24 PHP
PHP小教程之实现链表
Jun 09 PHP
Thinkphp的volist标签嵌套循环使用教程
Jul 08 PHP
Linux下手动编译安装PHP扩展的例子分享
Jul 15 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
Nov 05 PHP
php递归函数怎么用才有效
Feb 24 PHP
Yii2框架自定义验证规则操作示例
Feb 08 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编码规范
2015/09/28 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
初识JQuery 实例一(first)
2011/03/16 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
js中变量的连续赋值(实例讲解)
2017/07/08 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
Bally澳大利亚官网:瑞士奢侈品牌
2018/11/01 全球购物
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
咖啡书吧创业计划书
2014/01/13 职场文书
答谢会策划方案
2014/05/12 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
党员个人剖析材料
2014/09/30 职场文书
会议欢迎词
2015/01/23 职场文书
教学质量月活动总结
2015/05/11 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
判断Python中的Nonetype类型
2021/05/25 Python
Node与Python 双向通信的实现代码
2021/07/16 Javascript
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏