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+DBM的同学录程序(4)
Oct 09 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
Laravel 4 初级教程之安装及入门
Oct 30 PHP
PHP中创建图像并绘制文字的例子
Nov 19 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
Sep 30 PHP
thinkphp3.2实现上传图片的控制器方法
Apr 28 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
Aug 17 PHP
详解PHP序列化和反序列化原理
Jan 15 PHP
Laravel框架使用Redis的方法详解
May 30 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 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分页显示制作详细讲解
2008/11/19 PHP
php中关于普通表单多文件上传的处理方法
2011/03/25 PHP
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
关于JavaScript的一些看法
2009/05/27 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
Javascript的比较汇总
2016/07/25 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
Python协程的用法和例子详解
2017/09/09 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
2014年办公室人员工作总结
2014/12/09 职场文书
人事专员岗位职责
2015/02/03 职场文书
工作态度检讨书范文
2015/05/06 职场文书
高三语文教学反思
2016/02/16 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书