Zend_Paginator
Было:
$adapter = new Zend_Paginator_Adapter_DbTableSelect($select);
$adapter = new Zend_Paginator_Adapter_DbTableSelect($select);
$adapter->setRowCount($countItem);
$paginator = new Zend_Paginator($adapter);
Стало:
$paginator = Zend_Paginator::factory($select)
$paginator->getAdapter()->setRowCount($countItem);$paginator = new Zend_Paginator($adapter);
Стало:
$paginator = Zend_Paginator::factory($select)
Если стиль и внешний вид скроллинга одинаковы для всего приложения, стоит задать их один раз.
Zend_Paginator::setDefaultScrollingStyle('Elastic');Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
Zend_Cache
Если кешей много, используй силу, Люк Zend_Cache_Manager.
тунсZend_Request
Было:
$_SERVER['HTTP_REFERER'];
$_SERVER['HTTP_USER_AGENT'];
и т.д.
Стало:
$this->_request->getClientIp();
$this->_request->getRequestUri();
$this->_request->getServer('HTTP_REFERER', 'undef');
$this->_request->getServer('HTTP_USER_AGENT', 'undef');
Zend_Db_Select
Было:
$select->where( 'alliances.id IN ('. implode(',', $alls) .')' );
Стало:
$select->where( 'alliances.id IN (?)', $alls);
Сложный WHERE
$ligs = array();
//тут каждый пайтонщик должен испытать гордость за выбранный язык =)
foreach( $searchOpt->liga as $val )
$ligs[] = $this->_db->quoteInto( 'players.liga = ?', $val );
$select->where( implode(' OR ', $ligs) );
Запрос на несколько таблиц (отвязка от таблицы)
Zend_Db_Table
Привязка multidb без лишних костылей
Было
$this->delete( $this->_db->quoteInto('id = ?', $idA) );
Стало
$this->delete( array('id = ?', $idA) );
Copy Source | Copy HTML
$select = $this->select();
- $select->setIntegrityCheck(false)
- ->from($this, array('players.id', 'players.id_alliance'))
- ->join('alliances','players.id_alliance = alliances.id',array('alliances.name AS all'));
Zend_Db_Table
Привязка multidb без лишних костылей
Удаление записейCopy Source | Copy HTML
//переопределяем метод Zend_Db_Table_Abstract
- protected function _setupDatabaseAdapter()
- {
- $this->_db = Zend_Controller_Front::getInstance()
- ->getParam('bootstrap')
- ->getPluginResource('multidb')
- ->getDb('majordomoru');
- parent::_setupDatabaseAdapter();
- }
Было
$this->delete( $this->_db->quoteInto('id = ?', $idA) );
Стало
$this->delete( array('id = ?', $idA) );
Zend_Session
Сессию стоит привязывать к браузеру юзера (а для IP в ZF2 тоже есть компонент)
Zend_Session::registerValidator( new Zend_Session_Validator_HttpUserAgent() );
Zend_RouteZend_Session::registerValidator( new Zend_Session_Validator_HttpUserAgent() );
Простые проверки переменных можно проводить ещё на этапе роутинга, но стоит помнить о стандартном роутере (подробнее тут)
Copy Source | Copy HTML
- $router->addRoute('userHistory',
- new Zend_Controller_Router_Route('/profile/history/:page/:count',
- array( 'controller' => 'user', 'action' => 'history', 'page' => 1, 'count' => 20 ),
- array( 'page' => '\d+', 'count' => '^(10|20|50|100)$' )));
Комментариев нет:
Отправить комментарий