Core名字空间参考
详细描述
FleaPHP 用简单、具有一致性的模型来实现 Ajax 操作。
当初始页面在浏览器中显示出来后,用户的操作会触发一个 Ajax 操作: 1、一个 Ajax 触发器函数(例如点击某个按钮或连接、以及修改了输入框的内容)被调用 (由 FleaPHP 自动生成的 JavaScript 代码); 2、关联到这个触发器的数据会以表单(或 URL 参数)的形式传递到服务端的控制器方法; 3、控制器方法(开发者编写的 PHP 代码)通过 $_POST 或 $_GET 获得 Ajax 请求提交的数据; 4、控制器方法进行操作后,返回 HTML 代码片段、JSON 字符串、XML 文档或任意文本; 5、触发器的后续函数(由 FleaPHP 自动生成的 JavaScript 代码)将控制器方法返回的结果更新到页面上, 或调用指定的 JavaScript 函数。
要在应用程序中使用 FleaPHP 提供的 Ajax 支持,必须做一些准备工作。
首先将 FLEA/Ajax 目录中的 jquery.js(已经集成官方 form 插件)文件复制到应用程序可以被浏览器访问到的目录中, 例如 scripts 目录。
接下来,在要使用 Ajax 支持页面的 <head> 和 </head> 标签之间加上:
<script language="JavaScript" type="text/javascript" src="scripts/jquery.js"></script> <?php $ajax->dumpJs(); ? >
上述两行代码确保 Ajax 支持需要的 JavaScript 脚本被载入。
此处的 $ajax 对象是 FLEA_Ajax 类的一个实例。通过 FLEA::initAjax() 获得。
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
Ajax 类提供了大部分 Ajax 操作
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
开发者应该直接使用 FLEA_Rbac_RolesManager 类
- Deprecated:
开发者应该直接使用 FLEA_Rbac_UsersManager 类
- Deprecated:
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
占位文件,直接载入 MVC.package.php
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
该文件用于让基于 FleaPHP 1.0.6x 系列开发的应用程序能够在不做大量修改的情况下与 FleaPHP 1.0.70 及以后的版本保持兼容。
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
定义 FLEA_Controller_Action 类
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
FLEA_Controller_Action 实现了一个其它控制器的超类, 为开发者自己的控制器提供了一些方便的成员变量和方法
开发者不一定需要从这个类继承来构造自己的控制器。 但从这个类派生自己的控制器可以获得一些便利性。
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
定义 FLEA_Db_ActiveRecord 类
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技(www.qeeyuan.com)
- 版本:
- Id
FLEA_Db_ActiveRecord 类实现了 ActiveRecord 模式
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技(www.qeeyuan.com)
- 版本:
- Id
定义 FLEA_Db_Driver_Abstract 类
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
FLEA_Db_Driver_Abstract 是所有数据库驱动的抽象基础类
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.1
定义 FLEA_Db_Driver_Mysql 驱动
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
用于 mysql 扩展的数据库驱动程序
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.1
与 FLEA_Db_Driver_Mysql 的唯一区别在于 FLEA_Db_Driver_Mysqlt 支持事务功能
要求表的存储引擎为 InnoDB 或者 BDB。
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.1
定义 FLEA_Db_Driver_Oracle 驱动
参考 AdoDB 的 MetaColumns() 及 SelectLimit() 方法。
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
用于 pgsql 扩展的数据库驱动程序
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
定义 FLEA_Db_Driver_Pgsql 驱动
由夜猫子提供,廖宇雷修改,并参考 AdoDB 的 MetaColumns() 及 SelectLimit() 方法。
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 夜猫子 yangyi.cn.gz AT# gmail.com
- 版本:
- Id
用于 pgsql 扩展的数据库驱动程序
- 作者:
- 夜猫子 yangyi.cn.gz AT# gmail.com
- 版本:
- 1.1
定义 FLEA_Db_TableDataGateway 类
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
FLEA_Db_TableDataGateway 类(表数据入口)封装了数据表的 CRUD 操作
开发者应该从 FLEA_Db_TableDataGateway 派生自己的类, 并通过添加方法来封装针对该数据表的更复杂的数据库操作。
对于每一个表数据入口对象,都必须在类定义中通过 $tableName 和 $primaryKey 来分别指定数据表的名字和主键字段名。
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.2
定义 FLEA_Db_TableLink 类及其继承类
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
FLEA_Db_TableLink 封装数据表之间的关联关系
FLEA_Db_TableLink 是一个完全供 FleaPHP 内部使用的类, 开发者不应该直接构造 FLEA_Db_TableLink 对象。
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.2
FLEA_Db_HasOneLink 封装 has one 关系
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
FLEA_Db_BelongsToLink 封装 belongs to 关系
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
FLEA_Db_HasManyLink 封装 has many 关系
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
FLEA_Db_ManyToManyLink 封装 many to many 关系
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
FLEA_Db_SqlHelper 类提供了各种生成 SQL 语句的辅助方法
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
定义 FLEA_Dispatcher_Auth 类
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
FLEA_Dispatcher_Auth 分析 HTTP 请求,并转发到合适的 Controller 对象处理
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
定义 FLEA_Dispatcher_Simple 类
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
FLEA_Dispatcher_Simple 分析 HTTP 请求,并转发到合适的 Controller 对象处理
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
定义 ___uri_filter 函数
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
定义了一系列用于简化数组操作的函数
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
该文件定义了一些用户简化文件系统操作的函数和对象
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
定义 FLEA_Helper_FileUploader 和 FLEA_Helper_FileUploader_File 对象
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
FLEA_Helper_FileUploader 实现了一个简单的、可扩展的文件上传助手
使用方法:
$allowExts = 'jpg,png,gif'; $maxSize = 150 * 1024; // 150KB $uploadDir = dirname(__FILE__) . '/upload';
FLEA::loadClass('FLEA_Helper_FileUploader'); $uploader =& new FLEA_Helper_FileUploader(); $files =& $uploader->getFiles(); foreach ($files as $file) { if (!$file->check($allowExts, $maxSize)) { // 上传的文件类型不符或者超过了大小限制。 return false; } // 生成唯一的文件名(重复的可能性极小) $id = md5(time() . $file->getFilename() . $file->getSize() . $file->getTmpName()); $filename = $id . '.' . strtolower($file->getExt()); $file->move($uploadDir . '/' . $filename); }
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
封装一个上传的文件
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
定义一组便于生成表单元控件的方法
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
定义 FLEA_Helper_Image 类
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
FLEA_Helper_Image 类封装了针对图像的操作
开发者不能直接构造该类的实例,而是应该用 FLEA_Helper_Image::createFromFile() 静态方法创建一个 FLEA_Helper_Image 类的实例。
操作大图片时,请确保 php 能够分配足够的内存。
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
定义 FLEA_Helper_ImgCode 类
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
FLEA_Helper_ImgCode 类实现了一个简单的图像验证码生成器,并带有检查验证方法
当启用了 session 时,验证码会保存在 session 中。用法:
模版页面中,在需要显示验证码的地方使用
接下来为显示验证码的控制器编写 imgcode 方法: function actionImgcode() { $imgcode =& FLEA::getSingleton('FLEA_Helper_ImgCode'); $imgcode->image(); }
最后,对于用户提交的表单做如下验证: function actionSubmit() { $imgcode =& FLEA::getSingleton('FLEA_Helper_ImgCode'); // 假定验证码在表单中的字段名是 imgcode if ($imgcode->check($_POST['imgcode'])) { // 验证通过 } }
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
定义 FLEA_Helper_Pager 类
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
FLEA_Helper_Pager 类提供数据查询分页功能
FLEA_Helper_Pager 使用很简单,只需要构造时传入 FLEA_Db_TableDataGateway 实例以及查询条件即可。
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
定义 FLEA_Helper_SendFile 类
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
FLEA_Helper_SendFile 类用于向浏览器发送文件
利用 FLEA_Helper_SendFile,应用程序可以将重要的文件保存在 浏览器无法访问的位置。然后通过程序将文件内容发送给浏览器。
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
定义 FLEA_Helper_Verifier 类
Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com)
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- Id
FLEA_Helper_Verifier 对象根据一系列验证规则对指定的数据进行验证
验证规则由多个规则组成,每个规则用于验证一个字段。
每个规则可以包含下列基本属性: name: 字段名 type: 字段类型 simpleType: 简单字段类型 maxLength: 最大长度 notNull: 是否不允许保存 NULL 值 notEmpty: 是否不允许为空字符串 binary: 是否是二进制数据 unsigned: 是否是无符号数值 hasDefault: 是否有默认值 defaultValue: 默认值
如果 notNull 为 true,而 hasDefault 为 false,则表示该字段必须有内容。
simpleType 属性可以有下列值: C - 长度小于等于 250 的字符串 X - 长度大于 250 的字符串 B - 二进制数据 N - 数值或者浮点数 D - 日期 T - TimeStamp L - 逻辑布尔值 I - 整数 R - 自动增量或计数器
基本属性和利用 SDBO::metaColumns() 方法取得的字段信息完全一致。 因此可以直接将 metaColumns() 的返回结果作为验证规则。
为了获得更强的验证能力,还可以使用下列扩展属性:
complexType: 复杂字段类型 min: 最小值(仅用于数值型字段) max: 最大值(仅用于数值型字段) minLength: 最小长度(仅用于字符型和文本型字段) maxLength: 最大长度(仅用于字符行和文本型字段)
对于 complexType 属性,可以有下列值: NUMBER - 数值(整数、浮点数) INT - 整数 ASCII - ASCII 字符串(所有编码小于等于 127 的字符) EMAIL - Email 地址 DATE - 日期(所有 GNU Date Input Formats,例如 yyyy/mm/dd、yyyy-mm-dd) TIME - 时间(所有 GNU Date Input Formats,例如 hh:mm:ss) IPv4 - IPv4 地址(格式为 a.b.c.h) OCTAL - 八进制数值 BINARY - 二进制数值 HEX - 十六进制数值 DOMAIN - Internet 域名 ANY - 任意类型 STRING - 字符串(等同于任意类型) ALPHANUM - 文字和数字(26个字母和0-9) ALPHA - 文字(26个字母) ALPHANUMX - 26个字母、10个数字以及 _ 符号 ALPHAX - 26个字母以及 - 符号
在客户端可以通过 verifier.js 提供的验证服务对数据进行验证, 但客户端验证仅提供有限的验证能力。包括:
notNull, hasDefault, min, max, minLength, maxLength
- 作者:
- 起源科技 (www.qeeyuan.com)
- 版本:
- 1.0
Spyc -- A Simple PHP YAML Class - 版本:
- 0.2.3 -- 2006-02-04
- 作者:
- Chris Wanstrath <chris@ozmm.org> Copyright 2005-2006 Chris Wanstrath http://www.opensource.org/licenses/mit-license.php MIT License 定义 FLEA_Language 类 使用界面多语言支持,要做如下工作: 1、 修改应用程序设置multiLanguageSupport 指定为 true,启用多语言支持;languageFilesDir 指定一个目录,表示语言文件所在根目录;defaultLanguage 指定默认语言名,例如 chinese-utf8、chinese-gb2312 等。 2、 准备语言目录和字典文件 假设 languageFilesDir 指向 d:, 那么就要在 d: 下建立不同语言的子目录, 例如 chinese-utf8、chinese-gb2312。 因此应用程序如果是要载入 chinese-utf8 的字典文件,那么实际的字典文件就存放在 d:-utf8\ 目录。 字典文件的名字可以随意定,但最好有一定意义。 例如用于用户界面的字典文件可以是 ui.php 或者 UserInterface.php。 字典文件的内容很简单,就是用 return 返回一个数组,例如:
<?php // d:-utf8\UserInterface.php // 用于 chinese-utf8 语言的用户界面字典文件 return array( 'applicationTitle' => '应用程序的标题', 'authorName' => '作者名', 'copyright' => '版权所有', ); 3、 在应用程序中使用字典文件 应用程序用 load_language($dictname, $language = null) 载入指定的语言文件。 $dictname 参数指定字典名,$language 参数指定语言名。 假如没有指定 $language 参数,则使用应用程序设置 defaultLanguage 的值作为 $language 参数的值。 // 载入 chinese-utf8 的指定字典文件 load_language('UserInterface', 'chinese-utf8'); 4、 获取字典中对应的文本 载入字典文件后,就可以通过字典文件查询原文和翻译后的文本了。 使用 _T($key, $language = null) 获取指定字符串的翻译文本,例如: echo _T('applicationTitle', 'chinese-utf8'); 显示结果将是前面字典文件中定义的'应用程序的标题'。 5、 简化操作 每次都给 _T() 指定第二个参数显然不方便,所以我们可以在应用程序开始执行时, 先获取用户选择的界面语言,然后用 set_app_inf('defaultLanguage', $language) 设置默认语言。 这样后续的 _T() 就不用指定第二个参数了。 Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com) 起源科技 (www.qeeyuan.com) FLEA_Language 提供了语言转换功能 起源科技 (www.qeeyuan.com) 1.0 定义 FLEA_Log 类 Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com) 起源科技 (www.qeeyuan.com) FLEA_Log 类提供基本的日志服务 起源科技 (www.qeeyuan.com) 1.0 定义 FLEA_Rbac_RolesManager 类 Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com) 起源科技 (www.qeeyuan.com) FLEA_Rbac_RolesManager 派生自 FLEA_Db_TableDataGateway, 用于访问保存角色信息的数据表 如果数据表的名字不同,应该从 FLEA_Rbac_RolesManager 派生类并使用自定义的数据表名字、主键字段名等。 定义 FLEA_Rbac_UsersManager 类 Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com) 起源科技 (www.qeeyuan.com) UsersManager 派生自 FLEA_Db_TableDataGateway,用于访问保存用户信息的数据表 如果数据表的名字不同,应该从 FLEA_Rbac_UsersManager 派生类并使用自定义的数据表名字、主键字段名等。 起源科技 (www.qeeyuan.com) 1.0 定义 FLEA_Rbac 类 Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com) 起源科技 (www.qeeyuan.com) FLEA_Rbac 提供基于角色的权限检查服务 FLEA_Rbac 并不提供用户管理和角色管理服务, 这些服务由 FLEA_Rbac_UsersManager 和 FLEA_Rbac_RolesManager 提供。 起源科技 (www.qeeyuan.com) 1.0 定义 FLEA_Session_Db 类 Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com) 起源科技 (www.qeeyuan.com) FLEA_Session_Db 类提供将 session 保存到数据库的能力 要使用 FLEA_Session_Db,必须完成下列准备工作: 创建需要的数据表 字段名 类型 用途 sess_id varchar(64) 存储 session id sess_data text 存储 session 数据 activity int(11) 该 session 最后一次读取/写入时间 修改应用程序设置 sessionProvider 为 FLEA_Session_Db 起源科技 (www.qeeyuan.com) 1.0 定义 FLEA_View_Lite 类 Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com) 起源科技 (www.qeeyuan.com) FLEA_View_Lite 提供了对 TemplateLite 模板引擎的支持 起源科技 (www.qeeyuan.com) 1.0 定义 FLEA_View_Simple 类 Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com) 起源科技 (www.qeeyuan.com) FLEA_View_Simple 实现了一个简单的、使用 PHP 自身作为模版语言, 带有缓存功能的模版引擎 起源科技 (www.qeeyuan.com) 1.0 定义 FLEA_View_SmartTemplate 类 Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com) 小龙 xlonecn@msn.com FLEA_View_SmartTemplate 提供了对 SmartTemplate 模板引擎的支持 小龙 xlonecn@msn.com 1.0 定义 FLEA_View_Smarty 类 Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com) 起源科技 (www.qeeyuan.com) FLEA_View_Smarty 提供了对 Smarty 模板引擎的支持 起源科技 (www.qeeyuan.com) 1.0 定义 FLEA_View_SmartyHelper 类 Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com) 起源科技 (www.qeeyuan.com) FLEA_View_SmartyHelper 扩展了 Smarty 和 TemplateLite 模版引擎, 提供对 FleaPHP 内置功能的直接支持。 起源科技 (www.qeeyuan.com) 1.0 定义 FLEA_WebControls 类 Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com) 起源科技 (www.qeeyuan.com) FLEA_WebControls 类提供一组支持 WebControls 的静态方法 开发者不应该自行加载该文件,而是调用 init_webcontrols() 来进行 WebControls 的初始化。 起源科技 (www.qeeyuan.com) 1.0 定义 FLEA 类和基础函数,并初始化 FleaPHP 运行环境 对于大部分 FleaPHP 的组件,都要求预先初始化 FleaPHP 环境。 在应用程序中只需要通过 require('FLEA.php') 载入该文件, 即可完成 FleaPHP 运行环境的初始化工作。 Copyright (c) 2005 - 2008 QeeYuan China Inc. (http://www.qeeyuan.com) 起源科技 (www.qeeyuan.com) FLEA 类提供了 FleaPHP 框架的基本服务 该类的所有方法都是静态方法。 起源科技 (www.qeeyuan.com) 1.0 调试和错误处理相关的全局函数 抛出一个异常 FleaPHP 为了兼容 PHP4,模拟了一种异常机制。但这种模拟机制和真正的异常机制有本质区别。 FleaPHP 模拟的异常机制有下列特点:用 __TRY() 而不是 try 设置捕获点;用 __CATCH() 捕获异常,而不是 catch;用 __THROW() 抛出异常;__TRY() 和 __CATCH() 并不能够捕获 PHP5 中用 throw 抛出的异常;程序在使用 __THROW() 抛出异常后,必须使用 return false 退出函数或类方法的执行;__TRY() 和 __CATCH() 必须成对调用,并且 __CATCH() 只能捕获一个异常;用 __IS_EXCEPTION() 来判断 __CATCH() 的返回值是否是一个异常;如果 __TRY() 调用后没有用 __CATCH() 捕获异常,必须用 __CANCEL_TRY() 取消捕获。 虽然 __THROW() 并不强制要求抛出的异常必须是从 FLEA_Exception 继承的类,但应用程序 应该抛出 FleaPHP 已经定义的异常。或者从 FLEA_Exception 派生应用程序自己的异常。 FLEA_Exception 提供了一些方法,可以让应用程序更好的处理异常。 下面的代码片段是模拟异常最常见的使用形式。 __TRY(); $ret = doSomething(); // 调用可能会发生异常的代码 $ex = __CATCH(); if (__IS_EXCEPTION($ex)) { // 处理异常 } else { echo $ret; } function doSomething() { if (rand(0, 9) % 2) { __THROW(new MyException()); return false; } return true; } 特别要注意的就是使用 __THROW() 抛出异常后,必须 return false 由于 doSomething() 中的 __THROW() 实际上并不中断程序执行,所以调用 doSomething() 的 代码要负责检查返回值,或者在调用 doSomething() 以后理解捕获异常。 为此,__TRY() 和 __CATCH() 之间的代码要尽可能的少。 对于 __TRY() 和 __CATCH() 的嵌套问题: FleaPHP 是允许 __TRY() 嵌套的。例如在上面代码中,doSomething() 函数调用了其他可能抛出 异常的代码。则在 doSomething() 中也可以通过 __TRY() 和 __CATCH() 来捕获异常。 function doSomething() { if (rand(0, 9) % 2) { __THROW(new MyException()); return false; } else { __TRY(); callAnotherFunc(); $ex = __CATCH(); if (__IS_EXCEPTION($ex)) { // 处理 callAnotherFunc() 函数抛出的异常 ... // 根据处理结果,可以用 __THROW() 重新抛出这个异常, // 让调用 doSomething() 的代码去处理该异常 __THROW($ex); return false; } return true; } } 如果调用 __TRY() 之后不需要调用 __CATCH() 捕获异常,则必须用 __CANCEL_TRY() 撤销用 __TRY() 设置的捕获点。 FLEA_Exception $exception boolean 设置异常拦截点 返回抛出的异常,如果没有异常抛出,返回 false FLEA_Exception 清除最后一个 __TRY() 异常捕获设置 判断是否是一个异常 $type 参数用于判断异常是否是指定的类型。 FLEA_Exception $exception string $type 设置新的异常处理例程,返回当前使用的异常处理例程 当抛出的异常没有任何 __TRY() 捕获时,将调用异常处理例程。FleaPHP 默认的 异常处理例程会显示异常的详细信息,已经程序运行路径,帮助开发者定位错误。 用法: // 保存现在使用的异常处理例程 global $prevExceptionHandler; $prevExceptionHandler = __SET_EXCEPTION_HANDLER('app_exception_handler'); function app_exception_handler(& $ex) { global $prevExceptionHandler; if (is_a($ex, 'APP_Exception')) { // 处理该异常 ... } else { // 调用原有的异常处理例程 if ($prevExceptionHandler) { call_user_func_array($prevExceptionHandler, array(& $exception)); } } } 上面的代码设置了一个新的异常处理例程,同时可以在必要时调用原有的异常处理例程。 虽然不强制要求开发者这样做,但参照上面的代码片段可以形成一个异常处理例程调用链。 callback $callback mixed FleaPHP 默认的异常处理例程 FLEA_Exception $ex 打印异常的详细信息 FLEA_Exception $ex boolean $return 为 true 时返回输出信息,而不是直接显示 输出变量的内容,通常用于调试 mixed $vars 要输出的变量 string $label boolean $return 显示应用程序执行路径,通常用于调试 string 查询指定错误信息对应的消息文本 该函数会根据应用程序设置 'defaultLanguage' 载入不同语言的错误信息文件, 然后根据错误代码查询错误消息文本,并返回查询结果。 注意,如果找不到指定语言的错误信息,会载入名为 default 的语言文件。 当 $appError 为 true 时,_ET() 会尝试在应用程序设置 'languageFilesDir' 指定的目录中读取语言文件。 int $errorCode boolean $appError string
Generated at Sat Feb 2 15:18:59 2008 for FleaPHP by
1.5.3