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 相关文章推荐
PHP实现的功能是显示8条基色色带
Oct 09 PHP
PHP文件注释标记及规范小结
Apr 01 PHP
取得单条网站评论以数组形式进行输出
Jul 28 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
Jul 03 PHP
CodeIgniter基于Email类发邮件的方法
Mar 29 PHP
php监测数据是否成功插入到Mysql数据库的方法
Nov 25 PHP
PHP基于IMAP收取邮件的方法示例
Aug 07 PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 PHP
php-msf源码详解
Dec 25 PHP
PHP抽象类与接口的区别详解
Mar 21 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 PHP
php7连接MySQL实现简易查询程序的方法
Oct 13 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 setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
PHP操作xml代码
2010/06/17 PHP
header跳转和include包含问题详解
2012/09/08 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
PHP字典树(Trie树)定义与实现方法示例
2017/10/09 PHP
js 提交和设置表单的值
2008/12/19 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
JS的replace方法介绍
2012/10/20 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
es6基础学习之解构赋值
2018/12/10 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
python操作mysql数据库
2017/03/05 Python
python使用多进程的实例详解
2018/09/19 Python
django 微信网页授权认证api的步骤详解
2019/07/30 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
模范家庭事迹材料
2014/02/10 职场文书
中国梦读书活动总结
2014/07/10 职场文书
大学毕业生管理学求职信
2014/09/01 职场文书
委托证明模板
2014/09/16 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
总经理岗位职责范本
2015/04/01 职场文书
婚礼父母致辞
2015/07/28 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js