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 获取全局变量的代码
Apr 21 PHP
PHP计算2点经纬度之间的距离代码
Aug 12 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
PHP向socket服务器收发数据的方法
Jan 24 PHP
PHP实现返回JSON和XML的类分享
Jan 28 PHP
php编写的一个E-mail验证类
Mar 25 PHP
php基于单例模式封装mysql类完整实例
Oct 18 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
Nov 07 PHP
django中的ajax组件教程详解
Oct 18 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对XML内容进行修改和删除实例代码
2016/10/26 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
PHP反射学习入门示例
2019/06/14 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
JavaScript函数定义方法实例详解
2019/03/05 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
python处理cookie详解
2014/02/07 Python
python多线程编程中的join函数使用心得
2014/09/02 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
Python中join函数简单代码示例
2018/01/09 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
python跳出双层for循环的解决方法
2019/06/24 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
橄榄树药房:OLIVEDA
2019/09/01 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
团工委书记自荐书范文
2013/12/17 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
小学一年级评语大全
2014/04/22 职场文书
机电专业求职信
2014/06/14 职场文书
人民调解协议书范本
2014/10/11 职场文书
普通党员整改措施
2014/10/24 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
十大经典日本动漫排行榜 海贼王第三,犬夜叉仅第八
2022/03/18 日漫