查看: 5493|回复: 0
打印 上一主题 下一主题

《PHP高级程序设计:模式、框架和测试》——5.3 命名空间

[复制链接]
跳转到指定楼层
1#
发表于 2009-8-3 10:08:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
5.3 命名空间

命名空间对于PHP类来说就像是文件和目录的关系,它们给类库添加了结构和层次组织关系。命名空间允许你为两个不同的类使用相同的类名称。例如,你也许希望有一个名为Line的类,这个类会在图像上画一条线。然而,Line类的画线功能在处理像素格式图像和矢量格式图像时是大不一样的。理想的解决方案是使用两个带有命名空间的类,这样的话就可以给它们起相同的名称了。

命名空间使用了两个关键的语言结构:namespace和use。要声明一个命名空间,需要在文件的顶部指定命名空间的名称。在文件中声明的所有类和函数就属于这个命名空间了。namespace代码行必须在文件的顶部,在其他任何变量、类或者函数定义的前面。代码清单5-8演示了如何创建命名空间中的类。

代码清单5-8 声明命名空间(Vector.php)

<?php

namespace Vector;

class Line {

  public function draw($x1, $y1, $x2, $y2) { . . . }

}

为了和命名空间一起使用,需重载作用域限定操作符(::)。例如,如果要在Vector命名空间中创建Line类的一个新实例,将使用作用域限定操作符,如代码清单5-9所示。

代码清单5-9 命名空间中的作用域限定

<?php

require_once('Vector.php');

$line = new Vector::Line();

$line->draw(1,1,10,10);

你可以使用多个层次的命名空间。例如,Graphics::Vector::Line就是一个有效的命名空间名称。唯一的限制就是在一个文件中只能声明一个命名空间。

随着命名空间越来越多,使用命名空间会显得有点烦琐。所幸,PHP还提供了use语句,允许给一个特定的命名空间起别名。代码清单5-10显示了如何使用use语句来缩短Line类的实例代码。

代码清单5-10 使用use语句

<?php

require_once('Vector.php');

use Vector::Line as Line;

$line = new Line();

$line->draw(1,1,10,10);

你还可以用use语句给整个命名空间起别名。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表