PHP命名空间namespace及use的简单用法分析


Posted in PHP onAugust 03, 2018

本文实例讲述了PHP命名空间namespace及use的简单用法。分享给大家供大家参考,具体如下:

最近一段时间在研究php框架,一直想的什么时候才能开发出自己的框架,当然这是为了提升自己的编程水平,同时能把平时学的零散的东西糅合在一块熟练应用。但是开发一个框架根本不知道如何做起,先开发什么,虽然php的框架也不少,但是都是如何应用,没有文档和视频可以学习,这是让我特别郁闷的事情,相信不少想自己开发框架玩的小伙伴都有类似的感受,郁闷归郁闷,自己还是动手做了,做的时候困难和想象的一样难,从一开始就有点蒙了。

那就是命名空间的使用及use引入。看了很多网上的说法,也看了官方文档,意思大概明白,也很好理解,命名空间还好说,给这个空间起个名字嘛,但是use具体操作起来就不行 了,怎么也搞不通。后来看一个yii学习视频才恍然明白。

比方说建三个文件。

第一个文件 A.php,里边有两个类,命名空间是 a\b\c;

<?php
namespace a\b\c;
class Apply{
  function get_info(){
    echo 'this is A Apply';
  }
}
class C{
  function info(){
    echo 'this is info';
  }
}

第二个文件 B.php  命名空间 a\b\d;

<?php
namespace a\b\d;
class Apply{
  function get_info(){
    echo 'this is B Apply';
  }
}

第三个文件 index.php ,用来使用上边两个文件的类。

比方说我们现在想实例化A.php里的类,该怎么实现呢?

首先要包含这个文件

require_once('A.php');

然后 use a\b\c;? 还是a\b\c\A?   起初我也是这么认为的。其实这是错的,use应该是这样的,命名空间\这个空间下你要实例化类的类名。比方说我们要实例化 A.php里的Apply类,那么 use a\b\c\Apply;  这就相当于引入这个类,接下来再  new Apply();调用里边的方法,跟平常是一样的。如果要实例化类C,就 use a\b\c\C;

注意:use不等于require_once或者include,use的前提是已经把文件包含进当前文件

顺便提一句,在MVC模式中,类名和文件名是相同的,所以use的时候会让不了解的人以为use后面跟的是文件名,我之前就这么以为的。其实use的还是类名。

有的人可能问了,那我不同的命名空间下,有相同的类名,在同一个文件中使用怎么办?比方说我们上边的index.php,把A.php和B.php都包含进来,然后new Apply();这个时候是会报错的,解决方案就是起别名,比方说 use a\b\d\Apply as b;  此时我们new 的时候不应该写成 new Apply();而是new b();这样就不会发生冲突了。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
我的群发邮件程序
Oct 09 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
配置php网页显示各种语法错误
Sep 23 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
PHP关联数组实现根据元素值删除元素的方法
Jun 26 PHP
php抽象类用法实例分析
Jul 07 PHP
微信获取用户地理位置信息的原理与步骤
Nov 12 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
PHP用FTP类上传文件视频等的简单实现方法
Sep 23 PHP
PHP排序二叉树基本功能实现方法示例
May 26 PHP
如何让PHP编码更加好看利于阅读
May 12 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 PHP
PHP后台实现微信小程序登录
Aug 03 #PHP
thinkPHP5框架闭包函数与子查询传参用法示例
Aug 02 #PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 #PHP
lnmp安装多版本PHP共存的方法详解
Aug 02 #PHP
Laravel5框架添加自定义辅助函数的方法
Aug 01 #PHP
PHP实现数组根据某个单元字段排序操作示例
Aug 01 #PHP
PHP实现的分解质因数操作示例
Aug 01 #PHP
You might like
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
js事件(Event)知识整理
2012/10/11 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
bootstrap table小案例
2016/10/21 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
Vue插件之滑动验证码
2019/09/21 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
python中循环语句while用法实例
2015/05/16 Python
Python Socket传输文件示例
2017/01/16 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
Python Flask-web表单使用详解
2017/11/18 Python
python并发编程之线程实例解析
2017/12/27 Python
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
详解Python3 基本数据类型
2019/04/19 Python
python2和python3在处理字符串上的区别详解
2019/05/29 Python
pandas中的series数据类型详解
2019/07/06 Python
简单了解python中的与或非运算
2019/09/18 Python
Python with语句和过程抽取思想
2019/12/23 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
Python LMDB库的使用示例
2021/02/14 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
四风自我剖析材料
2014/09/30 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS