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 相关文章推荐
杏林同学录(五)
Oct 09 PHP
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
Mar 28 PHP
php IP转换整形(ip2long)的详解
Jun 06 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
PHP实现Soap通讯的方法
Nov 03 PHP
CI框架给视图添加动态数据
Dec 01 PHP
php操纵mysqli数据库的实现方法
Sep 18 PHP
详谈PHP中的密码安全性Password Hashing
Feb 04 PHP
PHPCMS手机站伪静态设置详细教程
Feb 06 PHP
Laravel 实现密码重置功能
Feb 23 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 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
Zend studio文件注释模板设置方法
2013/09/29 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
JavaScript中自定义事件用法分析
2014/12/23 Javascript
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
javascript实现确定和取消提示框效果
2015/07/10 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
Koa从零搭建到Api实现项目的搭建方法
2019/07/30 Javascript
微信小程序实现蓝牙打印
2019/09/23 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
[01:01:41]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第二场 1月31日
2021/03/11 DOTA
python输出指定月份日历的方法
2015/04/23 Python
Python itertools模块详解
2015/05/09 Python
分析Python中解析构建数据知识
2018/01/20 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
Python对象转换为json的方法步骤
2019/04/25 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
个人简历自荐信
2013/12/05 职场文书
房地产活动策划方案
2014/05/14 职场文书
读书笔记怎么写
2015/07/01 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
Python 中面向接口编程
2022/05/20 Python