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 相关文章推荐
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
一段php加密解密的代码
Jul 16 PHP
PHP DataGrid 实现代码
Aug 12 PHP
Linux下将excel数据导入到mssql数据库中的方法
Feb 08 PHP
PHP开发中的错误收集,不定期更新。
Feb 03 PHP
php中防止伪造跨站请求的小招式
Sep 02 PHP
PHP $_FILES中error返回值详解
Jan 30 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
Jul 01 PHP
php中的curl_multi系列函数使用例子
Jul 29 PHP
WIFI万能钥匙密码查询接口实例
Sep 28 PHP
PHP那些琐碎的知识点(整理)
May 20 PHP
通过PHP实现用户注册后邮箱验证激活
Nov 10 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 join函数应用
2011/05/04 PHP
PHP爆绝对路径方法收集整理
2012/09/17 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
Node.js开发指南中的简单实例(mysql版)
2013/09/17 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
部署Python的框架下的web app的详细教程
2015/04/30 Python
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
python中partial()基础用法说明
2018/12/30 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
Python编写打字训练小程序
2019/09/26 Python
Django 解决由save方法引发的错误
2020/05/21 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
建筑工程实习自我鉴定
2013/09/19 职场文书
市场营销毕业求职信
2014/08/07 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
2015年安全月活动总结
2015/03/26 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书
百年校庆感言
2015/08/01 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
iPhone13再次曝光
2021/04/15 数码科技