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 中的一些经验积累
Oct 09 PHP
Base64在线编码解码实现代码 演示与下载
Jan 08 PHP
基于php下载文件的详解
Jun 02 PHP
探讨:使用XMLSerialize 序列化与反序列化
Jun 08 PHP
php ctype函数中文翻译和示例
Mar 21 PHP
php使用ereg验证文件上传的方法
Dec 16 PHP
PHP实现Google plus的好友拖拽分组效果
Oct 21 PHP
thinkphp框架page类与bootstrap分页(美化)
Jun 25 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
May 12 PHP
php+js实现的无刷新下载文件功能示例
Aug 23 PHP
详解Laravel框架的依赖注入功能
May 27 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
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
浅析is_writable的php实现
2013/06/18 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
jquery实现全选、全不选以及单选功能
2017/03/23 jQuery
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
Python使用googletrans报错的解决方法
2018/09/25 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
PyTorch中的Variable变量详解
2020/01/07 Python
pyspark 随机森林的实现
2020/04/24 Python
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
《在大海中永生》教学反思
2014/02/24 职场文书
小学运动会班级口号
2014/06/09 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
求职自我评价范文100字
2014/09/23 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
Python保存并浏览用户的历史记录
2022/04/29 Python