PHP命名空间(Namespace)简明教程_php实例

这一特性在 PHP5.0x 时候就提出过,后来被取消并安排在 PHP6 中实现。而此次又再次“提前”到了 PHP5.3 发布,可见开发人员对其的重视以及谨慎的态度。

官方发布时说明文档的内容可能已过期(documentation maybe out dated),所以在这里简单的说明命名空间的用法:首先是声明一个命名空间,加入了新的关键字 namespace ,其应在类文件的开头

复制代码 代码如下:

<?php  
namespace Project::Module;   
class User {      
    const STATUS_OK = true;      
    function register($data) {  
        ...      
    }  
    ...  
}?>

然后在控制器中(可能是其他文件)就可以这样调用

复制代码 代码如下:

$user = new Project::Module::User();  
$user->register($register_info);

的确与平常的并无两样,但是我们可以将两个相互独立的类联系起来。比如

复制代码 代码如下:

Project::Module::User;  
Project::Module::Blog;

这样就能从语言本身更容易描述和理解变量、类之间的关系,从而避免了“传统”上的 Project_Module_Blog 这样冗长的命名方式。

上面的说明可能很难说明使用命名空间带来了什么好处,新增加的 use 和 as 关键字或许能更好的说明问题。use 和 as 语句可以引用和声明 命名空间的“别名”。比如,上述的控制器中实例化类的代码可以这样写

复制代码 代码如下:

use Project::Module;  
$user = new Module::User();   
$user->register($register_info);
 
甚至

复制代码 代码如下:

use Project::Module::User as ModuleUser;  
$user = new ModuleUser;  
$user->register($register_info);

类中的常量也可以通过命名空间访问,比如上述类中的 STATUS_OK 就可以通过命名空间

复制代码 代码如下:

Project::Module::User::STATUS_OK

访问。进一步的,也可以用别名简化那么长的“变量名称”

复制代码 代码如下:

use Project::Module::User::STATUS_OK as STATUS_OK;
echo STATUS_OK;

顺便提下“超空间(The Global Namespace)”的概念。所谓的“超空间”,就是没有指定命名空间的变量、类和函数。比如

复制代码 代码如下:

function foo() {  
    ...  
}

这的函数,可以使用 foo() 执行的同时,也可以使用 ::foo(); 这样执行。

最后,配合使用 autoload 函数即可载入指定命名空间的类。简单的函数如下

复制代码 代码如下:

function __autoload( $classname ) {      
    $classname = strtolower( $classname );      
    $classname = str_replace( '::', DIRECTORY_SEPARATOR, $classname );  
    require_once( dirname( __FILE__ ) . '/' . $classname . '.class.php' );  
}

这样,比如调用

复制代码 代码如下:

__autoload('Project::Module::User'); 

就可以自动载入 Project_Module_User.class.php 文件(虽然这样看起来并不方便多少)。

时间: 2024-11-02 18:09:19

PHP命名空间(Namespace)简明教程_php实例的相关文章

php版微信公众账号第三方管理工具开发简明教程_php实例

本文讲述了php版微信公众账号第三方管理工具开发方法.分享给大家供大家参考,具体如下: 最近在捣鼓微信公共平台提供的API,等确实一个获取用户信息的API. 所以没有办法,只能自己去获取,手动填写当然可以解决问题,当然编程不就是为了让生活变的更简单么? 当然,远程抓取微信公共平台数据的想法就油然而生,当然第一个想到了CURL. CURL可以远程提交表达,我感觉微信是提议让我们怎么的,只要不是恶意刷接口,就不会出现验证码. 主要注意的几个问题: ① 远程登录接口是时候的HTTPS协议. ② 登录成

ThinkPHP Mobile使用方法简明教程_php实例

一.基础知识 1.手机APP的类型 移动端的应用有这几种:WebApp,NativeApp,HybridApp. WebApp 就是手机网站,需要用手机浏览器访问. NativeApp是用原生语言开发,用户需要下载安装的手机应用. NativeApp的开发成本很高,每个平台的开发语言都不一样, 比如IOS的开发语言是object C , Android系统的APP需要用Java开发, WindowsPhone 则需要用 C# 开发.那么我们如果需要做一个多平台都能运行的APP,需要用多种语言重复

Destoon模板制作简明教程_php实例

对于制作Destoon的模板来说,首先需要理解两个Destoon的概念:模板(template)和风格(skin).模板存放于系统template 目录,风格(系统界面的图片.css文件)存放于系统skin目录,也就是说,template放置页面文件,skin放置样式文件. Destoon模板制作过程: 首先,把template和skin文件夹下原有的default文件夹各复制拷贝一份,同时改名为newmoban,准备在系统自带的默认模版文件基础上修改成自己的模版. 然后,修改template和

php编译安装php-amq扩展简明教程_php技巧

本文讲述了php编译安装php-amq扩展的方法.分享给大家供大家参考,具体如下: 用途:这个扩展是用来操作rabbitmq服务端的 一.安装总括 1.编译安装librabbitmq库 这是一个开源c语言的库.用来与rabbitmq进行通信 而php的php-amqp扩展就是使用这个库与服务端通信.所以必须先安装这个开源库. 下载地址:https://github.com/alanxz/rabbitmq-c/ 点击此处本站下载. 2.编译php-amqp扩展的源码 注:两个的版本要指定,避免冲突

Yii2框架制作RESTful风格的API快速入门教程_php实例

先给大家说下什么是REST restful REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一. 他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强.性能好.适宜通信的架构.REST指的是一组架构约束条件和原则." 如

PHP类中的魔术方法(Magic Method)简明总结_php实例

1. __construct()和__destruct() 在实例被 创建/销毁 的时候被调用,都可以传递0个或多个参数. class A { function A() { echo "build A"; } function __destruct() { echo "destroy A"; } } $obj = new A(); //unset($obj); Note:The destructor method will be called as soon as

Yii快速入门经典教程_php实例

本文讲述了Yii快速入门教程.分享给大家供大家参考,具体如下: Ⅰ.基本概念 一.入口文件 入口文件内容:一般格式如下: <?php $yii=dirname(__FILE__).'/../../framework/yii.php';//Yii框架位置 $config=dirname(__FILE__).'/protected/config/main.php';//当前应用程序的主配置文件位置 // 部署正式环境时,去掉下面这行 // defined('YII_DEBUG') or define

PHP的Yii框架入门使用教程_php实例

安装 Yii 的安装由如下两步组成: 从 yiiframework.com 下载 Yii 框架. 将 Yii 压缩包解压至一个 Web 可访问的目录. Tip|提示: 安装在 Web 目录不是必须的,每个 Yii 应用都有一个入口脚本,只有它才必须暴露给 Web 用户.其它 PHP 脚本(包括 Yii)应该保护起来不被 Web 访问,因为它们可能会被黑客利用.需求 安装完 Yii 以后你也许想验证一下你的服务器是否满足使用 Yii 的要求,只需浏览器中输入如下网址来访问需求检测脚本: http:

Symfony2在Nginx下的配置方法图文教程_php实例

本文详细讲述了Symfony2在Nginx下的配置方法.分享给大家供大家参考,具体如下: 网上有很多关于symfony2在nginx下的配置文章,如果是小白,按照网上贴出来的配置文件配置,却怎么也不成功,我经过多次摸索,写下心得: 1. 首先开启Nginx的pathinfo 至于什么是pathinfo,可以参考文章<nginx下支持PATH_INFO的方法实例详解>,自行脑补.很多人按照教程配置的时候,会报500的错误,查报错日志也查不出来,八成就是没有开启pathinfo. 如果你的主机上安