suchen
HeimBackend-EntwicklungPHP-Tutorialzendframework2 Datenbank-Gateway und Paging-Vereinfachung

Angesichts der Tatsache, dass es in China relativ wenige Tutorials für zendframework2 gibt, wurde ich dazu inspiriert, diesen technischen Artikel über das zf2-Framework zu schreiben, in der Hoffnung, den Bedürftigen zu helfen.

1. configautoloadglobal.php

<?php
//php中文网 www.php.cn
return array(
    &#39;db&#39; => array(
            &#39;driver&#39; => &#39;pdo&#39;,
            &#39;driver_options&#39; => array(
                \PDO::MYSQL_ATTR_INIT_COMMAND => &#39;SET NAMES \&#39;UTF8\&#39;&#39;
            )
    )
);

2. configautoloadlocal.php

<?php
//php中文网 www.php.cn
return array(
    &#39;db&#39; => array(
        &#39;dsn&#39; => &#39;mysql:dbname=testdb;hostname=localhost&#39;,
        &#39;username&#39; => &#39;root&#39;,
        &#39;password&#39; => &#39;root&#39;,
        &#39;prefix&#39; => &#39;phpcn_&#39;
    ),
);

3. ModulApplicationModule.php

public function getServiceConfig()
{
    return array(
                  &#39;factories&#39;=>array(
                            &#39;Application\Model\Db&#39;=>function($sm){
                                                        $service=new Model\Db($sm);
                                                        return $service;
                            },
                            &#39;Db\Adapter&#39;=>function($sm){
                                                        $configs=$sm->get(&#39;Config&#39;);
                                                        $adapter = new \Zend\Db\Adapter\Adapter($configs[&#39;db&#39;]);
                                                        return $adapter;
                            },
                            &#39;Db\Feature&#39;=>function($sm){
                                                        $configs=$sm->get(&#39;Config&#39;);
                                                        $Feature=new \Application\Model\TableNamePrefixFeature($configs[&#39;db&#39;][&#39;prefix&#39;]);
                                                        return $Feature;
                            },
                            &#39;Db\Padapter&#39;=>function($sm){
                                                        $Padapter=new \Zend\Paginator\Adapter\DbSelect($sm->get(&#39;Application\Model\Db&#39;)->select,$sm->get(&#39;Db\Adapter&#39;));
                                                        return $Padapter;
                            },
                            &#39;Db\Paginator&#39;=>function($sm){
                                                        $Paginator=new \Zend\Paginator\Paginator($sm->get(&#39;Db\Padapter&#39;));
                                                        return $Paginator;
                            },
                ),
                  &#39;abstract_factories&#39;=>array(&#39;Application\Services\CommonDbAbstractFactory&#39;)
    );
}

4. moduleApplicationviewpaginationtmpl.phtml

<?php if ($this->pageCount): ?>
    <p class="pageX">
        <?php if (isset($this->previous)): ?>
            <a href="<?php echo $this->url().&#39;?p=&#39;.$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().&#39;?p=&#39;.$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().&#39;?p=&#39;.$this->next;?>">下一页 ></a>
        <?php else: ?>
            <span>下一页 ></span>
        <?php endif; ?>
    </p>
<?php endif; ?>

5. moduleApplicationsrcApplicationServicesCommonDbAbstractFactory.php

<?php
//php中文网 www.php.cn
namespace Application\Services;
use Zend\ServiceManager\AbstractFactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class CommonDbAbstractFactory implements AbstractFactoryInterface
{
    public function canCreateServiceWithName(ServiceLocatorInterface $locator, $name, $requestedName)
    {
        $a=explode(&#39;:&#39;,$name);
        if(!empty($a[0]) && $a[0]==&#39;db&#39;){
            return true;
        }
        return false;
    }
     
    public function createServiceWithName(ServiceLocatorInterface $locator, $name, $requestedName)
    {
        $a=explode(&#39;:&#39;,$name);
        return $locator->get(&#39;Application\Model\Db&#39;)->get($a[1]);
    }
     
}

6. moduleApplications rcApplicationModelDb. php

<?php
//php中文网 www.php.cn
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(&#39;Config&#39;);
        $adapter=$this->sm->get(&#39;Db\Adapter&#39;);
        $dbFeature=$this->sm->get(&#39;Db\Feature&#39;);
        $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;
    }
}

7. moduleApplicationsrcApplicationModelTableNamePrefixFeature.php

<?php
//php中文网 www.php.cn
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);
        }
    }
}

8. moduleApplicationsrcApplicationControllerIndexController.php

$this->sm=$this->getServiceLocator();
$this->model=$this->sm->get(&#39;db:model&#39;);
$p=intval($this->getRequest()->getQuery(&#39;p&#39;,1));
$per_page=1;
$result=$this->model->where(&#39;id > 2&#39;)->order(&#39;id DESC&#39;)->limit($per_page)->offset(($p-1)*$per_page)->fetch()->toArray();
$paginator=$this->sm->get(&#39;Db\Paginator&#39;);
$paginator->setCurrentPageNumber($p);
$paginator->setItemCountPerPage($per_page);
\Zend\Debug\Debug::dump($result);
echo $this->sm->get(&#39;ViewRenderer&#39;)->paginationcontrol($paginator, &#39;Sliding&#39;, &#39;pagination/tmpl.phtml&#39;);

[Dieser Artikel wurde von „Ty80 Account“ geschrieben, veröffentlicht am 13. Juli 2017]

Das obige ist der detaillierte Inhalt vonzendframework2 Datenbank-Gateway und Paging-Vereinfachung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Welche Daten können in einer PHP -Sitzung gespeichert werden?Welche Daten können in einer PHP -Sitzung gespeichert werden?May 02, 2025 am 12:17 AM

PHPSSIONS CANSTORESTRINGEN, ZUGNALTEN, ARRAYS, ANDOBjekte.1.

Wie starten Sie eine PHP -Sitzung?Wie starten Sie eine PHP -Sitzung?May 02, 2025 am 12:16 AM

TostartaphpSession, useSession_start () atthescript'Sbeginning.1) PlaCEITBEFOREANYOUTPUTTOTHESESSIONSCOOKIE.2) useSsionsforuserDatalikeloginStatusOrShopingCarts

Was ist eine Sitzungsregeneration und wie verbessert es die Sicherheit?Was ist eine Sitzungsregeneration und wie verbessert es die Sicherheit?May 02, 2025 am 12:15 AM

Die Sitzung der Sitzung bezieht sich auf die Generierung einer neuen Sitzungs -ID und die Ungültigmachung der alten ID, wenn der Benutzer sensible Vorgänge bei festgelegten Sitzungsangriffen ausführt. Die Implementierungsschritte umfassen: 1. Erkennen sensibler Vorgänge, 2. Erstellen neuer Sitzungs-ID, 3..

Was sind einige Leistungsüberlegungen bei der Verwendung von PHP -Sitzungen?Was sind einige Leistungsüberlegungen bei der Verwendung von PHP -Sitzungen?May 02, 2025 am 12:11 AM

PHP -Sitzungen haben erhebliche Auswirkungen auf die Anwendungsleistung. Zu den Optimierungsmethoden gehören: 1. Verwenden Sie eine Datenbank, um Sitzungsdaten zu speichern, um die Antwortgeschwindigkeit zu verbessern; 2. Reduzieren Sie die Verwendung von Sitzungsdaten und speichern Sie nur die erforderlichen Informationen. 3.. Verwenden Sie einen nicht blockierenden Sitzungsprozessor, um die Parallelitätsfunktionen zu verbessern. 4. Passen Sie die Ablaufzeit der Sitzung an, um Benutzererfahrung und Serverbelastung auszugleichen. 5. Verwenden Sie persistente Sitzungen, um die Anzahl der Les- und Schreibzeiten zu verringern.

Wie unterscheiden sich PHP -Sitzungen von Cookies?Wie unterscheiden sich PHP -Sitzungen von Cookies?May 02, 2025 am 12:03 AM

PhpSessionsaresServer-Side, whilecookiesareclient-Side.1) SESSIsions Storedataontheserver, Aremoresecure und Handlelargerdata.2) CookieStoredataoneTheClient, AslosenSecure und LimitedInsiesindaSsibilitäts- und -Stasibilitäts- und -Stasibilitäts- und -Anssibilitäts- und -Anssibilitätsporsedataandcookiesefornonsesibel, adailliertes, adailliertes, adailliertes, adailliertes, adailliertes, addiertes-addiertes- und -Staillieren- und -Anssistieren, und -Anssibilitätsporsedaten- und -Sta- und addierta und -Anssibilitäts- und addiertes- und addailliert.

Wie identifiziert PHP die Sitzung eines Benutzers?Wie identifiziert PHP die Sitzung eines Benutzers?May 01, 2025 am 12:23 AM

PhpidentifiesAsersSSessionUsingSSessionCookiesAndSessionIDs.1) WHANE Session_Start () iscalled, phpGeneratesAuniqueSessionIDStoredInacookienMamePhpSsidontonTheusers.2) thisidallowStoretrieVessionDataFromtheServer.

Was sind einige Best Practices für die Sicherung von PHP -Sitzungen?Was sind einige Best Practices für die Sicherung von PHP -Sitzungen?May 01, 2025 am 12:22 AM

Die Sicherheit von PHP -Sitzungen kann durch folgende Maßnahmen erreicht werden: 1. Verwenden Sie Session_regenerate_id (), um die Sitzungs -ID zu regenerieren, wenn sich der Benutzer anmeldet oder eine wichtige Operation ist. 2. Verschlüsseln Sie die Übertragungssitz -ID durch das HTTPS -Protokoll. A. Verwenden Sie Session_save_path (), um das sichere Verzeichnis anzugeben, um Sitzungsdaten zu speichern und Berechtigungen korrekt festzulegen.

Wo werden standardmäßig PHP -Sitzungsdateien gespeichert?Wo werden standardmäßig PHP -Sitzungsdateien gespeichert?May 01, 2025 am 12:15 AM

PhpSessionFilesArestoredinTHedRectorySpecifiedBySession.save_path, typischerweise/tmponunix-likesystemsorc: \ windows \ temponwindows

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor