akawalko / zfext
库扩展了Zend Framework 1.12的功能。
Requires
- php: >=5.3.0
- zf1/zend-cache: 1.12.6
- zf1/zend-db: 1.12.6
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is auto-updated.
Last update: 2024-09-20 15:14:26 UTC
README
ZFExt是一个扩展Zend Framework 1.12组件的库。因为我有几个基于ZF1的项目,所以我决定与大家分享我的技巧和窍门。
ZFExt_Db_Table
这个类从Zend_Db_Table派生。它提供了一个干净、几乎透明的缓存层。
使用方法
首先,我们需要创建一个从ZFExt_Db_Table继承的类。在这里,我们声明了两个标准方法,get()和getAll(),分别用于通过ID从名为users的数据库表中获取记录和获取所有记录。通过传递名为$useCache的参数,我们可以控制何时从数据库检索数据以及何时从缓冲区中检索。
<?php class Users extends ZFExt_Model_DbTable { protected $_name = 'users'; protected $_primary = 'user_id'; public function get($id, $useCache = true) { $select = $this->select() ->where('user_id = :user_id'); return $this->loadOne($select, array('user_id' => $id), null, $useCache, __METHOD__); } public function getAll($useCache = true) { $select = $this->select() ->where('is_active = :is_active'); return $this->loadAll($select, array('is_active' => 1), null, $useCache, __METHOD__); } }
现在我们可以初始化我们的类并从数据库中检索一些数据。
<?php /** Composer Autoloader **/ require 'vendor/autoload.php'; $db = Zend_Db::factory('Pdo_Mysql', array( 'host' => '127.0.0.1', 'username' => 'your_db_user', 'password' => 'your_db_passord', 'dbname' => 'your_db_name' )); $cache = Zend_Cache::factory('Core', 'APC', array( 'lifetime' => 3600, 'automatic_serialization' => true, )); $userModel = new Users(array('db' => $db, 'cache' => $cache)); $users = $userModel->getAll();
使用$userModel->getAll()检索所有活跃用户,并将结果保存在缓冲区中,标识符为
Users__getAll__a_1__s_9__is_active__i_1
可用方法
- setCache($cache)
- getCache()
- setOptions(array $options)
- createCacheId($methodName, $methodArguments = array())
- removeByPartialId($id)
- loadOne($sql, $bind = array(), $fetchMode = null, $useCache = true, $calleeMethodName = '')
- loadAll($sql, $bind = array(), $fetchMode = null, $useCache = true, $calleeMethodName = '')
- _loadFromCacheIfPossible($fetchMethod, array $args)
方法简要描述
setCache() 设置或覆盖缓存对象。此方法在构造函数中内部使用,如果我们传递了一个包含名为cache的索引的关联数组,就像上面的例子一样。
getCache() 返回缓存对象。
setOptions() 设置或覆盖选项。此方法在构造函数中内部使用,如果我们传递了一个关联数组。
createCacheId() 根据两个参数生成描述性缓存ID。此方法在方法loadOne()和loadAll()中内部使用。$methodName非常直观。它是强制性的。第二个参数称为$methodArguments,是一个数组,其中包含在查询执行期间将使用的值。
removeByPartialId() 通过部分ID删除缓存条目。这对于从特定模型类中删除条目而不删除所有条目非常有用。
loadOne()和loadAll()只是代理方法,提供直观的API(前三个参数与类Zend_Db_Adapter中的方法fetchRow()和fetchAll()的参数相同)。它们内部使用方法_loadFromCacheIfPossible()。
让我们看看参数列表。 $sql 可以是原始 SQL 查询或 Zend_Db_Select 对象。 $bind 是一个数组,其中包含在查询执行期间将使用的值。当参数有名称时最佳,因为它将用于生成描述性的缓存 ID。出于相同的原因,最后一个参数 $calleeMethodName 是使用 loadOne () / loadAll () 获取数据的函数的名称。 $fetchMode 控制Zend_Db 返回查询结果的方式。请使用 Zend_Db 类常量 FETCH_ASSOC、FETCH_NUM、FETCH_BOTH、FETCH_COLUMN 和 FETCH_OBJ 指定获取模式。要了解更多信息,请参阅 Zend 的在线文档,章节 Zend_Db_Statement。 $useCache 是一个布尔标志,用于控制从数据库检索数据还是从缓冲区检索。
_loadFromCacheIfPossible() 由方法 loadOne() & loadAll() 内部使用。它接受两个参数。 $fetchMethod 是一个字符串,可能有两个值:fetchRow、fetchAll 分别。它们是用于从数据库(如果缓冲区中没有找到数据)检索数据的类 Zend_Db_Adapter 中的方法名称。 $args 是一个数组,包含传递给方法 loadOne() & loadAll() 的所有参数。