实例讲解PHP中使用命名空间


Posted in PHP onJanuary 27, 2019

让我给你一个类的简单例子:

<?php 
 
namespace Dojo;
 
class Ninja
{
 
}

在上面的示例中,我们在Dojo命名空间中创建了一个名为Ninja的新类。如果我们没有使用命名空间,并且我们的应用程序中包含了另一个名为Ninja的类,那么我们将得到一个错误,说明我们不能重新声明类。

那么命名空间就可以解决这个问题。我们可以创建另一个类,像这样:

<?php 
 
namespace Training;
 
class Ninja
{
 
}

现在,如果我们将这两个文件都包含在应用程序中,就可以很容易地区分我们想要使用哪个Ninja类。

作为一个例子,这里有一些代码,说明我们将如何使用Ninja类:

<?php
 
// require both of our ninja classes
require "Dojo/Ninja.php";
require "Training/Ninja.php";
 
// create a new Ninja in the Dojo namespace
$ninja1 = new Dojo\Ninja();
 
// create a new Ninja in the Training namespace
$ninja2 = new Training\Ninja();

这两个类是不同的,可能具有不同的功能,因此命名空间允许我们使用相同的类名,并通过它们的名称空间对它们进行区分。你还可以使用PHP use函数使代码更具可读性。例如,假设我们只想使用Ninja而不是引入Dojo\Ninja。

我们可以这样做:

<?php
 
// require both of our ninja classes
require "Dojo/Ninja.php";
require "Training/Ninja.php";
 
use Dojo\Ninja as Ninja;
 
$my_ninja = new Ninja();

当我们想要使用另一个Ninja文件时,就可以简单的如下操作:

use Training\Ninja as Ninja;

就是这样!简单吧!

我想指出的最后一点是,通常在使用命名空间时,你要遵循命名空间的文件夹结构,以便更容易找到这些文件的位置。

所以我们的Training / Ninja.php文件可能会存在于Training文件夹中。

实例讲解PHP中使用命名空间

因此,想要继续在项目中添加易于记忆和常见的类名。只要记得给他们一个命名空间!

PHP 相关文章推荐
PHP 调试工具Debug Tools
Apr 30 PHP
php获取网页标题和内容函数(不包含html标签)
Feb 03 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
Dec 19 PHP
简单解决新浪SAE无法上传文件的问题
May 13 PHP
phpcms手机内容页面添加上一篇和下一篇
Jun 05 PHP
Linux系统递归生成目录中文件的md5的方法
Jun 29 PHP
PHP实现上传文件并存进数据库的方法
Jul 16 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
Yii实现显示静态页的方法
Apr 25 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
Sep 22 PHP
cakephp常见知识点汇总
Feb 24 PHP
PHP+MySql实现一个简单的留言板
Jul 19 PHP
PHP的PDO错误与错误处理
Jan 27 #PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 #PHP
PHP的PDO预处理语句与存储过程
Jan 27 #PHP
PHP中数组转换为SimpleXML教程
Jan 27 #PHP
实例讲解php实现多线程
Jan 27 #PHP
php中访问修饰符的知识点总结
Jan 27 #PHP
实例讲解php将字符串输出到HTML
Jan 27 #PHP
You might like
PHP实现网上点歌(二)
2006/10/09 PHP
php 301转向实现代码
2008/09/18 PHP
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
PHP反向代理类代码
2014/08/15 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
JQuery为textarea添加maxlength属性的代码
2010/04/07 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
python 多进程通信模块的简单实现
2014/02/20 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
python生成器推导式用法简单示例
2019/10/08 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
python 如何对logging日志封装
2020/12/02 Python
采购部部门职责
2013/12/15 职场文书
初二政治教学反思
2014/01/12 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android