Używanie zasobów aplikacji (application resource) pozawala na dyskretne tworzenie obiektów z wykorzystaniem mechanizmów Zend framework. Jeżeli, podczas tworzenia obiektu, w każdym projekcie wymagane są dodatkowe akcje, można je wykonać w metodach _initNazwaZasobu() klasy dziedziczącej z Zend_Application_Bootstrap_Bootstrap. Jednak ten sposób, wymusza, abyśmy za każdym razem, w każdym projekcie, umieszczali w tej klasie takie metody.
Istnieje metoda, która zwolni nas od każdorazowego powielania kodu metod _init. Polega ona na opakowaniu klas zendowskich Zend_Application_Resource_* i umieszczeniu tam powielanego dotąd kodu.
Przykładem może być umieszczanie w Zend_Registy adaptera do bazy danych, lub konfigurowanie view helperów DocType czy inne akcje.
Daje to jeszcze jedną korzyść: łatwe ustanawianie połączeń do wielu baz.
Przy 1 połączeniu sprawa jest prosta jak budowa Zend_Cepa
W pliku ini umieszcza się:
bootstrap.path = APPLICATION_PATH “klasa_z_Zend_Application_Bootstrap_Bootstrap.php”
bootstrap.class = “Nazwa_Klasy_Naszego_Bootstrap”
resources.db.adapter = "Zend_Db_Adapter_Pdo_Mysql"
resources.db.params.username = "login"
resources.db.params.password = "pass"
resources.db.params.dbname = "sjakas_baza_np_lokalna"
resources.db.params.host = "localhost"
I to wystarczy. Po odpaleniu, resztę czarnej roboty odwala framework.
Dostęp do naszego połączenia mamy poprzez getPluginResource(‘db’)->getDbAdapter().
Jeżeli mamy dwie bazy i chcemy aby je ‘obsługiwał’ automatycznie nasz bootstrap, trzeba będzie utworzyć własną klasę reusorce: dbWWW i dbLocal.
1. tworzymy klasę np:
require_once 'Zend/Application/Resource/Db.php';
class Resource_Dbwww extends Zend_Application_Resource_Db {
function init()
{
parent::init();//pozwólmy popracować Zendowi 
Zend_Registry::set('dbwww', $this->getDbAdapter());//zapisujemy adapter do rejestru
}
}
teraz w config.ini dopisujemy (założyłem, że plik z klasą leży w /library projektu):
pluginPaths.Resource = APPLICATION_PATH "/../library/Resource"
...
resources.dbwww.adapter = "Zend_Db_Adapter_Pdo_Mysql"
resources.dbwww.params.username = "www"
resources.dbwww.params.password = "www"
resources.dbwww.params.dbname = "baza_na_www"
resources.dbwww.params.host = "mysql.playboy.com"
That’s all folks
Teraz, jeżeli potrzeba w dowolnym miejscu użyć połączenia do bazy ‘mysql.playboy.com’ piszemy Zend_Registry::get(‘dbwww’), a jak potrzeba do bazy lokalnej Zend_Registry::get(‘www’).
Jeżeli trzymamy się standardów nazywania adapterów do baz, które sami sobie narzucamy w pracy, to takie podejście pozwala pisać biblioteki klas działające na bazach, bez potrzeby przekazywania adapterów jako parametrów konstruktora czy poszczególnych metod.