时间:2021-07-01 10:21:17 帮助过:25人阅读
一、config\autoload\global.php
- <?php
- //Gxl网 www.gxlcms.com
- return array(
- 'db' => array(
- 'driver' => 'pdo',
- 'driver_options' => array(
- \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
- )
- )
- );
二、config\autoload\local.php
- <?php
- //Gxl网 www.gxlcms.com
- return array(
- 'db' => array(
- 'dsn' => 'mysql:dbname=testdb;hostname=localhost',
- 'username' => 'root',
- 'password' => 'root',
- 'prefix' => 'phpcn_'
- ),
- );
三、module\Application\Module.php
- public function getServiceConfig()
- {
- return array(
- 'factories'=>array(
- 'Application\Model\Db'=>function($sm){
- $service=new Model\Db($sm);
- return $service;
- },
- 'Db\Adapter'=>function($sm){
- $configs=$sm->get('Config');
- $adapter = new \Zend\Db\Adapter\Adapter($configs['db']);
- return $adapter;
- },
- 'Db\Feature'=>function($sm){
- $configs=$sm->get('Config');
- $Feature=new \Application\Model\TableNamePrefixFeature($configs['db']['prefix']);
- return $Feature;
- },
- 'Db\Padapter'=>function($sm){
- $Padapter=new \Zend\Paginator\Adapter\DbSelect($sm->get('Application\Model\Db')->select,$sm->get('Db\Adapter'));
- return $Padapter;
- },
- 'Db\Paginator'=>function($sm){
- $Paginator=new \Zend\Paginator\Paginator($sm->get('Db\Padapter'));
- return $Paginator;
- },
- ),
- 'abstract_factories'=>array('Application\Services\CommonDbAbstractFactory')
- );
- }
四、module\Application\view\pagination\tmpl.phtml
- <?php if ($this->pageCount): ?>
- <p class="pageX">
- <?php if (isset($this->previous)): ?>
- <a href="<?php echo $this->url().'?p='.$this->previous;?>">< 前一页</a> |
- <?php else: ?>
- <span>< 前一页</span> |
- <?php endif; ?>
- <?php foreach ($this->pagesInRange as $page): ?>
- <?php if ($page != $this->current): ?>
- <a href="<?php echo $this->url().'?p='.$page;?>"><?php echo $page;?></a> |
- <?php else: ?>
- <?php echo $page; ?> |
- <?php endif; ?>
- <?php endforeach; ?>
- <?php if (isset($this->next)): ?>
- <a href="<?php echo $this->url().'?p='.$this->next;?>">下一页 ></a>
- <?php else: ?>
- <span>下一页 ></span>
- <?php endif; ?>
- </p>
- <?php endif; ?>
五、module\Application\src\Application\Services\CommonDbAbstractFactory.php
- <?php
- //Gxl网 www.gxlcms.com
- namespace Application\Services;
- use Zend\ServiceManager\AbstractFactoryInterface;
- use Zend\ServiceManager\ServiceLocatorInterface;
- class CommonDbAbstractFactory implements AbstractFactoryInterface
- {
- public function canCreateServiceWithName(ServiceLocatorInterface $locator, $name, $requestedName)
- {
- $a=explode(':',$name);
- if(!empty($a[0]) && $a[0]=='db'){
- return true;
- }
- return false;
- }
- public function createServiceWithName(ServiceLocatorInterface $locator, $name, $requestedName)
- {
- $a=explode(':',$name);
- return $locator->get('Application\Model\Db')->get($a[1]);
- }
- }
六、module\Application\src\Application\Model\Db.php
- <?php
- //Gxl网 www.gxlcms.com
- namespace Application\Model;
- use Zend\Db\TableGateway\TableGateway;
- use Zend\ServiceManager\ServiceManager;
- class Db
- {
- public function construct(ServiceManager $sm){
- $this->sm=$sm;
- }
- public function get($tablename=null)
- {
- $configs=$this->sm->get('Config');
- $adapter=$this->sm->get('Db\Adapter');
- $dbFeature=$this->sm->get('Db\Feature');
- $this->db=new TableGateway($tablename,$adapter,$dbFeature);
- $this->select=$this->db->getSql()->select();
- return $this;
- }
- public function fetch(){
- return $this->db->selectWith($this->select);
- }
- public function getSql(){
- return $this->select;
- }
- public function getTableGateway(){
- return $this->db;
- }
- public function select($where = null){
- return $this->db->select($where);
- }
- public function insert($set){
- return $this->db->insert($set);
- }
- public function update($set, $where = null){
- return $this->db->update($set,$where);
- }
- public function delete($where){
- return $this->db->delete($where);
- }
- public function call($functionName,$args){
- $this->select=call_user_func_array(array($this->select,$functionName),$args);
- return $this;
- }
- }
七、module\Application\src\Application\Model\TableNamePrefixFeature.php
- <?php
- //Gxl网 www.gxlcms.com
- namespace Application\Model;
- use Zend\Db\TableGateway\Feature\AbstractFeature;
- class TableNamePrefixFeature extends AbstractFeature
- {
- protected $prefix=null;
- public function construct($prefix=null)
- {
- if(null!==$prefix) {
- $this->setPrefix($prefix);
- }
- }
- public function setPrefix($prefix)
- {
- $this->prefix=$prefix;
- }
- public function postInitialize()
- {
- if(null!==$this->prefix){
- $this->tableGateway->getSql()->setTable($this->prefix.$this->tableGateway->table);
- }
- }
- }
八、module\Application\src\Application\Controller\IndexController.php
- $this->sm=$this->getServiceLocator();
- $this->model=$this->sm->get('db:model');
- $p=intval($this->getRequest()->getQuery('p',1));
- $per_page=1;
- $result=$this->model->where('id > 2')->order('id DESC')->limit($per_page)->offset(($p-1)*$per_page)->fetch()->toArray();
- $paginator=$this->sm->get('Db\Paginator');
- $paginator->setCurrentPageNumber($p);
- $paginator->setItemCountPerPage($per_page);
- \Zend\Debug\Debug::dump($result);
- echo $this->sm->get('ViewRenderer')->paginationcontrol($paginator, 'Sliding', 'pagination/tmpl.phtml');
【本文由“Ty80账号”发布,2017年7月13日】
以上就是zendframework2数据库网关及分页简化的详细内容,更多请关注Gxl网其它相关文章!