Varsayılan başvuran ve başvurmayan kullanırken IsZend Db Adaptör Siciline kayıtlı?

3 Cevap php

There is a out of box resources in Zend Framework, when configures in the ini file

resource.db.user ="xxxx"...

bootstrap, db adaptörü kurar önyükleme db adaptörü de, ya da kayıt içine sadece merak ayarlar nedir?

3 Cevap

Kimden ZF Manual on Zend Application:

Resource Registry

Kaynak yöntemleri veya eklentiler, hepsi değilse, birçok nesneleri başlatmak olacaktır, ve birçok durumda, bu nesneler, başka bir yerde uygulamada gerekli olacak. Nasıl bunları erişebilir?

Zend_Application_Bootstrap_BootstrapAbstract bu nesneler için yerel bir kayıt sağlar. Onlara da nesneleri saklamak için, sadece kaynaklardan onları geri.

Maksimum esneklik, bu kayıt, dahili olarak "kap" olarak adlandırılır; onun sadece gereksinimleri bir nesne olmasıdır. Kaynaklar daha sonra kaynak adı adını özellikleri olarak kayıtlıdır. Varsayılan olarak, bir örneği Zend_Registry kullanılır, ama aynı zamanda istediğiniz herhangi başka bir nesneyi belirtebilirsiniz.

Onlar da devlet Not:

Kayıt ve aynı zamanda konteyner küresel olmadığını unutmayın. Bu kaynakları getirmek için bootstrap erişimi gerekir anlamına gelir.

Ben sourcecode for Zend_Application_Bootstrap_BootstrapAbstract and the container is indeed a new Zend_Registry instance. Like they state in the manual, this is a local registry and not set via setInstance() küresel örneği olacak şekilde kontrol ettik. Yani atıfta eğer küresel Zend_Registry Eğer getInstance(), sonra cevap hayır ile olsun. Db adaptör orada olmayacak.

Not: I am not entirely sure, the db adapter is even stored inside the local registry object, since I could not find any reference for plugins being put there. registerPluginResource() bir dizi kaynak koyar gibi görünüyor. Olsa soru için önemli değil. Cevap hala hayır.

Bildiğim kadarıyla, hiçbir şey varsayılan Zend_Registry konur. Eğer kendinize göbeğini birinde _init ki ... yöntemleri yapmak zorunda.

Sen Bootstrap sınıfında kayıt kendinizi ekleyebilirsiniz:

protected function _initAddDbToRegistry()
{
    $this->bootstrap('db');
    $db = $this->getResource('db');

    Zend_Registry::set('db', $db);
}

Eğer sadece Db adaptör almak istiyorsanız Ancak, daha sonra bir dizi seçenek vardır:

Öncelikle, Zend_Application_Resource_Db Zend_Db_Table için varsayılan olarak db adaptörü koyacaktır, böylece kullanarak uygulama her yerde alabilirsiniz:

$db = Zend_Db_Table::getDefaultAdapter();

Alternatif olarak, ön denetleyicisi aracılığıyla retreive edebilirsiniz. Bir denetleyici eylem içinde kullanabilirsiniz:

$bootstrap = $this->getInvokeArg('bootstrap');
$db = $bootstrap->->getResource('db');

veya uygulama boyunca, bu iş olacak:

$bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
db = $bootstrap->->getResource('db');