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 相关文章推荐
学习使用curl采集curl使用方法
Jan 11 PHP
PHP实现邮件群发的源码
Jun 18 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
Codeigniter实现智能裁剪图片的方法
Jun 12 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
Sep 24 PHP
PHP+MySQL插入操作实例
Jan 21 PHP
php中switch与ifelse的效率区别及适用情况分析
Feb 12 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
php实现socket推送技术的示例
Dec 20 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
May 31 PHP
PHP Trait代码复用类与多继承实现方法详解
Jun 17 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代码
2006/12/06 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
Angular2 http jsonp的实例详解
2017/08/31 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
基于vue--key值的特殊用处详解
2020/07/31 Javascript
Python实现的tab文件操作类分享
2014/11/20 Python
简化Python的Django框架代码的一些示例
2015/04/20 Python
python使用正则表达式提取网页URL的方法
2015/05/26 Python
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
python实现批量修改文件名代码
2017/09/10 Python
Python多进程fork()函数详解
2019/02/22 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
组织鉴定材料
2014/06/02 职场文书
工程承包协议书范本
2014/09/29 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
工伤事故证明
2014/10/20 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
五年级作文之学校的四季
2019/12/05 职场文书