第十四节 命名空间 [14]_php基础

命名变量,函数和类是挺困难的,除了要考虑到变量的名称要易于理解,还要担心是否这个名称在其它某个地方已经使用过. 在一小段脚本中,第二个问题是基本问题. 当你考虑重用你的代码, 在这之后的项目代码必须避免使用你用过的命名. 通常来说,可重用的代码总是包含在函数或类中, 需要处理许多可能发生的命名冲突. 但函数和类之间也可能发生命名冲突. 你可以尝试避免出现这种情况,通过在所有类前添加前缀的方法,或者你可以使用namespace语句.

Namespace关键字给一块代码命名. 在这个代码块外部,脚本必须用操作符::加上命名空间的名称来引用这个代码块. 引用静态的类成员也是用相同的方法. 在命名空间内代码不需要声明命名空间, 它本身就是默认的. 这种方法比添加前缀的方法好. 你的代码可由此变得更加紧凑和可读.

你可能想知道是否可以建立分层的(嵌套的)命名空间. 答案是不可以. 但你可以在命名空间名称后加上冒号, 你可以再次调用在名称中不包含冒号的变量,函数和类. 命名空间允许存在冒号,只要不是第一个字符和最后一个字符或接着另一个冒号. 命名空间的名称中的冒号对于PHP来说没有任何意义, 但如果你用他们来区分逻辑上的区块, 他们可以很好地说明你的代码中的父子(parent-child)关系.

/* 注: 即可以使用这样:
namespace animal:dog {}
namespace animal:pig {}

用冒号来说明parent-child关系.
*/

你可能在一个命名空间语句内没有包含函数,类或常量定义以外的任何东西. 这将阻止你使用他们来改进旧的使用全局变量的函数库. 命名空间最适合于面向对象. 命名空间内的常量与类中的常量使用相同的语法.

例子6.17显示了如何使用命名空间.

Listing 6.17 Using a namespace
<?php
namespace core_php:utility
{
class textEngine
{
public function uppercase($text) file://大写
{
return(strtoupper($text));
}
}

//make non-OO interface 建立一个非OO的接口
function uppercase($text)
{
$e = new textEngine;
return($e->uppercase($text));
}

}

//test class in namespace 测试命名空间中的类
$e = new core_php:utility::textEngine;
print($e->uppercase("from object") . "<br>");

//test function in namespace 测试命名空间中的函数
print(core_php:utility::uppercase("from function") . "<br>");

//bring class into global namespace 把类导入全局命名空间
import class textEngine from core_php:utility;
$e2 = new textEngine;
?> Import语句把命名空间中的某个部份导入全局的命名空间.
要导入单一的命名空间的成员,可以指定类型为constant,function或class,接着写上成员的名称;
//如import class XXX
如果你想导入某一特定类型的所有成员,你可以用*来代替名称;
//如 import constant * 导入所有常量
如果你想导入所有类型的所有成员,用*即可.
//如 import *

在成员之后,用from关键字加上命名空间的名称.
//如 import class textEngine from core_php:utility;

总之你要写成像import * from myNamespace或 import class textEngine from core_php:utility这样的语句,就像例6.17中那样.

时间: 2024-11-30 18:00:43

第十四节 命名空间 [14]_php基础的相关文章

第十四节--命名空间 -- Classes and Objects in PHP5 [14]

object|php5|命名空间 /*+-------------------------------------------------------------------------------+| = 本文为Haohappy读<<Core PHP Programming>> | = 中Classes and Objects一章的笔记 | = 翻译为主+个人心得 | = 为避免可能发生的不必要的麻烦请勿转载,谢谢 | = 欢迎批评指正,希望和所有PHP爱好者共同进步! +---

Android开发入门(十四)显示图像 14.2 ImageSwitcher

前面的一节,介绍了如何组合使用Gallery和ImageView.但是,有的时候当你在gallery中点击一个图片 ,你可能不希望一个图片"突然地"在imageview中显示出来.例如,你可能希望给某个图片设置一些切换动 画.此时,就需要使用ImageSwitcher和Gallery一起使用.下面展示如何使用ImageSwitcher. 1. 创 建一个工程,ImageSwitcher. 2. main.xml中的代码. <?xml version="1.0"

Android开发入门(十四)显示图像 14.1 Gallery和ImageView

Gallery可以显示一系列的图片,并且可以横向滑动.下面展示如何使用Gallery去显示一系列的图片. 1. 创建一个工程,Gallery. 2. main.xml中的代码. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_

Spark修炼之道(基础篇)——Linux大数据开发基础:第十四节:Shell编程入门(六)

本文主要内容 case控制结构 read命令 管道 1. case控制结构 参考:http://blog.csdn.net/dreamtdp/article/details/8048720 case控制结构语法格式: case expression in pattern1 ) statements ;; pattern2 ) statements ;; ... esac case控制结构较之于if条件判断,代码可读性更强,典型的应用场景是:编写的shell Script可能会跨越好几种平台,如L

Scala入门到精通——第二十六节 Scala并发编程基础

作者:摇摆少年梦 视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 Scala并发编程简介 Scala Actor并发编程模型 react模型 Actor的几种状态 Actor深入使用解析 1. Scala并发编程简介 2003 年,Herb Sutter 在他的文章 "The Free Lunch Is Over" 中揭露了行业中最不可告人的一个小秘密,他明确论证了处理器在速度上的发展已经走到了尽头,并且将由全新的单芯片上的并行 &quo

第十四节 设置

表格是常用的页面元素.做网页经常要借助表格来进行排版,用好表格是页面设计的关键.借助表格,你可实现你所设想的任何排版效果.另外,也可灵活使用表格的背景.框线等作出较美观的效果. 插入表格我们要新建一个表格.点击 Objects 面版的 ,或点击Insert/Table,或使用快捷键Ctr+Alt+T,就会弹对话框. (表格的定义对话框) 下面进行解释:Rows :表格的行数.Columns :表格的列数.Cell Padding :表元间隙设置.Cell Spacing :表元内部空白.Widt

第二十四节 表单

表单的作用就是能使访问者与网站或网站管理人交互.利用表单,可根据访问者输入的信息,自动生成页面反馈给访问者:利用表单,还可以为网站收集访问者输入的信息.表单的使用其实可分为两部分.一部分是表单本身,即怎样把表单作为页面元素加入到网页页面.另一部分为表单的处理,即调用服务器端的脚本程序,或使以电子邮件的方式发送.本节内容主要是如何将表单加入网页页面. 点击Objects面板上方的form按钮,弹出一个选框.点击head,则Objects面板切换到form模式. 下图是一个表单制作的例子.本节将具体

第十一节 重载 [11]_php基础

PHP4中已经有了重载的语法来建立对于外部对象模型的映射,就像Java和COM那样. PHP5带来了强大的面向对象重载,允许程序员建立自定义的行为来访问属性和调用方法. 重载可以通过__get, __set, and __call几个特殊方法来进行. 当Zend引擎试图访问一个成员并没有找到时,PHP将会调用这些方法. 在例6.14中,__get和__set代替所有对属性变量数组的访问. 如果必要,你可以实现任何类型你想要的过滤. 例如,脚本可以禁止设置属性值, 在开始时用一定的前缀或包含一定类

十天学会php(3)_php基础

第七天 学习目的:学会SESSION的使用 SESSION的作用很多,最多用的就是站点内页面间变量传递.在页面开始我们要session_start();开启SESSION:然后就可以使用SESSION变量了,比如说要赋值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很简单吧.这里我们可能会使用到一些函数,比如说判断是不是某SESSION变量为空,可以这么写:empty($_SESSION['inum'])返回t