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 相关文章推荐
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
探讨fckeditor在Php中的配置详解
Jun 08 PHP
ThinkPHP惯例配置文件详解
Jul 14 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
Mar 25 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
php结合md5实现的加密解密方法
Jan 25 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
PHP封装的非对称加密RSA算法示例
May 28 PHP
php弹出提示框的是实例写法
Sep 26 PHP
phpQuery采集网页实现代码实例
Apr 02 PHP
PHP实现页面静态化深入讲解
Mar 04 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 编写安全的代码时容易犯的错误小结
2010/05/20 PHP
php中Smarty模板初体验
2011/08/08 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
JS随机密码生成算法
2019/09/23 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
web.py获取上传文件名的正确方法
2014/08/26 Python
Python中的ceil()方法使用教程
2015/05/14 Python
20招让你的Python飞起来!
2016/09/27 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
python opencv读mp4视频的实例
2018/12/07 Python
在python tkinter中Canvas实现进度条显示的方法
2019/06/14 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
学校教师读书活动总结
2014/07/08 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
安全主题班会教案
2015/08/12 职场文书
nginx结合openssl实现https的方法
2021/07/25 Servers
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python