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 相关文章推荐
dedecms中常见问题修改方法总结
Mar 21 PHP
escape unescape的php下的实现方法
Apr 27 PHP
php 文件夹删除、php清除缓存程序
Aug 25 PHP
解析crontab php自动运行的方法
Jun 24 PHP
php中spl_autoload详解
Oct 17 PHP
php+mysqli使用面向对象方式更新数据库实例
Jan 29 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
php pdo oracle中文乱码的快速解决方法
May 16 PHP
在IIS下安装PHP扩展的方法(超简单)
Apr 10 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
浅谈PHP匿名函数和闭包
Mar 08 PHP
laravel 实现根据字段不同值做不同查询
Oct 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
实现“上一页”和“下一页按钮
2006/10/09 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
PHP如何搭建百度Ueditor富文本编辑器
2018/09/21 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
生成二维码方法汇总
2014/12/26 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
Python中itertools模块用法详解
2014/09/25 Python
Python中的异常处理学习笔记
2015/01/28 Python
初步解析Python下的多进程编程
2015/04/28 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
python扫描线填充算法详解
2020/02/19 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
海南地接欢迎词
2014/01/14 职场文书
财务会计自荐信范文
2014/02/21 职场文书
师德师风的心得体会
2014/09/02 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技