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 相关文章推荐
function.inc.php超越php
Dec 09 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
Nov 29 PHP
php 模拟post_验证页面的返回状态(实例讲解)
Oct 28 PHP
php调整gif动画图片尺寸示例代码分享
Dec 05 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
thinkPHP实现表单自动验证
Dec 24 PHP
php实现mysql数据库分表分段备份
Jun 18 PHP
php使用preg_match()函数验证ip地址的方法
Jan 07 PHP
使用php实现网站验证码功能【推荐】
Feb 09 PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
Aug 11 PHP
PHP多维数组指定多字段排序的示例代码
May 16 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
javascript 文本框水印/占位符(watermark/placeholder)实现方法
2012/01/15 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
2020/03/26 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
2015/06/21 Python
Python延时操作实现方法示例
2018/08/14 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
python相对企业语言优势在哪
2020/06/12 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
日本卡普空电视游戏软件公司官方购物网站:e-CAPCOM
2018/07/17 全球购物
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
商务会议邀请函
2014/01/09 职场文书
毕业生自荐信格式
2014/03/07 职场文书
体育活动总结范文
2014/05/04 职场文书
活动总结模板
2014/05/09 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
西安导游词
2015/02/12 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
一年级语文教学随笔
2015/08/14 职场文书
2016中秋节广告语
2016/01/28 职场文书
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers