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脚本
Nov 26 PHP
初级的用php写的采集程序
Mar 16 PHP
PHP中MD5函数使用实例代码
Jun 07 PHP
php学习之 数组声明
Jun 09 PHP
简单实现限定phpmyadmin访问ip的方法
Mar 05 PHP
LotusPhp笔记之:Logger组件的使用方法
May 06 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
php使用session二维数组实例
Nov 06 PHP
php目录遍历函数opendir用法实例
Nov 20 PHP
php中异常处理方法小结
Jan 09 PHP
简单谈谈php浮点数精确运算
Mar 10 PHP
php断点续传之文件分割合并详解
Dec 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的in_array低性能问题
2013/09/17 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
JS严格模式知识点总结
2018/02/27 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
Python迭代和迭代器详解
2016/11/10 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
python顺序执行多个py文件的方法
2019/06/29 Python
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
文明礼仪小标兵事迹
2014/01/12 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
大班开学家长寄语
2014/04/04 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
推普周活动总结
2014/08/28 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
如何写好竞聘报告
2019/04/03 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python