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 相关文章推荐
php中处理模拟rewrite 效果
Dec 09 PHP
PHP5 面向对象程序设计
Feb 13 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
Apr 02 PHP
php中取得URL的根域名的代码
Mar 23 PHP
PHP中全面阻止SQL注入式攻击分析小结
Jan 30 PHP
PHP SPL标准库中的常用函数介绍
May 11 PHP
PHP 错误处理机制
Jul 06 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
Oct 22 PHP
php实现的简单数据库操作Model类
Nov 16 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
Jul 22 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中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
php使用cookie实现记住登录状态
2015/04/27 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
[15:46]教你分分钟做大人——沙王
2015/03/11 DOTA
布同自制Python函数帮助查询小工具
2011/03/13 Python
Python脚本暴力破解栅栏密码
2015/10/19 Python
基于python socketserver框架全面解析
2017/09/21 Python
Python进阶之尾递归的用法实例
2018/01/31 Python
Python实现购物车程序
2018/04/16 Python
python2.7实现爬虫网页数据
2018/05/25 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
Python求离散序列导数的示例
2019/07/10 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
餐饮业经理竞聘演讲稿
2014/01/14 职场文书
优秀公益广告词大全
2014/03/19 职场文书
《生命 生命》教学反思
2014/04/19 职场文书
学校节能减排倡议书
2014/05/16 职场文书
优秀毕业生就业推荐信
2014/05/22 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
百家讲坛观后感
2015/06/12 职场文书
vue实现可拖拽的dialog弹框
2021/05/13 Vue.js
PHP设计模式(观察者模式)
2021/07/07 PHP
bat批处理之字符串操作的实现
2022/03/16 Python