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和MySql来与ODBC数据连接
Oct 09 PHP
Phpbean路由转发的php代码
Jan 10 PHP
PHP实现定时生成HTML网站首页实例代码
Nov 20 PHP
PHP以及MYSQL日期比较方法
Nov 29 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
基于PHP文件操作的详细诠释
Jun 21 PHP
php 启动时报错的简单解决方法
Jan 27 PHP
destoon各类调用汇总
Jun 20 PHP
PHP中文竖排转换实现方法
Oct 23 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
php框架CodeIgniter主从数据库配置方法分析
May 25 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实现WebService的简单示例和实现步骤
2015/03/27 PHP
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
JavaScript 全角转半角部分
2009/10/28 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
原生js实现class的添加和删除简单代码
2016/07/12 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
JavaScript遍历数组和对象的元素简单操作示例
2019/07/09 Javascript
Python高级用法总结
2018/05/26 Python
Python Django基础二之URL路由系统
2019/07/18 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
python3跳出一个循环的实例操作
2020/08/18 Python
什么是Python包的循环导入
2020/09/08 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
想学画画?python满足你!
2020/12/24 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
调解员先进事迹材料
2014/02/07 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
2015大学生求职信范文
2015/03/20 职场文书
党员干部学习心得体会
2016/01/23 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android