dmelo / dzend
一组类,用于包装Zend v1。其目标是为了使常见模式更容易实现,并且透明地添加常用功能。
Requires
- php: >= 5.4.0
- emagister/zend-form-decorators-bootstrap: dev-bootstrap3
- facebook/php-sdk-v4: 4.0.23
- zendframework/zendframework1: >=1.12.0
Requires (Dev)
- phpunit/phpunit: 4.1.*
README
DZend 是一组包装 Zend
的类。其目标是使常见模式更容易实现,并透明地添加常用功能。
如果某个 Zend 类被 DZend 包装,那么它的名称将与 Zend 类相同,但以 D 开头,但 DZend 中没有抽象表。例如,DZend_Db_Table
扩展 Zend_Db_Table_Abstract
。
先决条件
PHP 5.4 >=
引导
引导实例化一些常用工具。
记录器
实例化 Zend_Log
并将其写入注册表。要访问此实例,只需调用
Zend_Registry::get('looger');
所有日志都将写入文件 public/tmp/log.txt
。
国际化
注册表已包含 Zend_Translate
实例 translate
。类似于记录器,要访问翻译对象,请调用
Zend_Registry::get('translate');
地区检测是自动完成的,如果没有找到,默认为 en_US
。
控制器
待办事项...
数据库
DZend_Db_Table
DZend_Db_Table
类实现了 __call
魔法函数,为选择查询添加一些功能。例如,假设 DbTable_User
扩展 DZend_Db_Table
并表示 user
数据库表。要查找所有女性用户,只需使用调用 $userDb->findByGender('f')
,其中 $userDb
是 DbTable_User
的实例。DZend 解析函数名以识别列。
可以使用 "And" 来分隔列名。格式化方法 findByColumnAAndColumnBAndColumnC($a, $b, $c)
将返回一个包含所有具有 column_a = $a AND column_b = $b AND column_c = $c
的行的 Zend_Db_Table_Rowset
。
要获取单个 Zend_Db_Table_Row
而不是行集,请使用 findRowBy
而不是 findBy
。
与 findBy
类似,也存在 deleteBy
,它删除所有匹配的行。
注册表缓存
如果扩展 DZend_Db_Table
的类将 $_allowRequestCache
设置为 true,则在使用 findById
或 findRowById
方法时,行将根据 ID 缓存。请注意,缓存仅在请求期间持续。另外,请注意,更改的对象不会更新缓存。如果一个对象被检索然后更新,第二次检索该对象将返回旧对象。
insertMulti
方法
虽然 Zend_Db_Table
提供了插入单个行的 insert
方法,但 DZend_Db_Table
提供了 insertMulti
方法,该方法接受数据数组数组,以插入多行。
DZend_Db_Table_Row
通常,数据库、表和列的 SQL 名称使用下划线表示法,而编程使用驼峰表示法。 DZend_Db_Table_Row
自动在两者之间进行转换。假设 $row
是 DZend_Db_Table_Row
的实例。可以使用 $row->columnName
访问 column_name
的列值。
当前用户
使此特性正常工作的先决条件是,必须在 DZend_Session_Namespace::get('session')->user
上存储当前登录的用户行具有认证权限。它假设 id
属性包含用户的键。
DZend_CurrentUser
是一个特性,它提供了两个方法,_getUserRow()
和 _getUserId()
。如果没有用户登录,则返回 null
。
默认情况下,DZend_Model
和 DZend_Db_Table
已经扩展了这个特性。
PHPUnit
待办事项...