"Doğru" nedir

1 Cevap php

Eğer ZendApplication, nereye erişmek için uygulama geliştiriciler için bir veritabanı işleyici kurulması gerekir a sözleşmeler yakından yontucu varsayarak?

Ben biliyorum kurulum ZendDb adaptörü için. Ne bilmek istiyorum, onlar gibi her zaman kimlik bilgilerini sağlamak bir isteği karşısında birden örneklemesi, endişelenmenize gerek yok bu yüzden Zend Framework bağlamında, nasıl geliştiriciler kendi DB işleyicileri başlatmasını edilmelidir

Bir geliştirici keyfi bir sorgu çalıştırmak için Kod Ateşleyici ve ihtiyaçlarını kullanarak Örneğin, denetleyici bir veritabanı işleyicisi var.

$this->db->query(....

Bu sözleşmenin Zend eşdeğer nedir? Açık olmak gerekirse, ben Zend Framework sağlayan araçları kullanarak bunu gerçekleştirmek için yarım düzine şekilde düşünebilirsiniz. Ne arıyorum Zend Framework, genel durumda, bunu yapmak istiyor nasıl olduğunu.

1 Cevap

Fikir Özyükleme bir yapılandırma dosyasını okur ve size oluşturmak istediğiniz veritabanı adaptörünü açıklamak için yapılandırma girdileri beyan olduğunu:

[bootstrap]
resources.db.adapter = Pdo_Mysql
resources.db.params.dbname = "mydatabase"
resources.db.params.username = "webuser"
resources.db.params.password = "XXXX"
resources.db.isDefaultTableAdapter = true

Eğer doğru kongre aşağıdaki yapılandırma tuşlarını kullanın, bu otomatik olarak bir Zend_Application_Resource_Db nesnesi ve bootstrap resource registry mağaza oluşturmak ve başlatmak için Bootstrap temel sınıf sinyalleri.

Later in your Controller, you can access the resource registry. note: I've edited this code after testing it a bit more.

class SomeController extends Zend_Controller_Action
{
    public function init()
    {
        $bootstrap = $this->getInvokeArg("bootstrap");
        if ($bootstrap->hasPluginResource("db")) {
            $dbResource = $bootstrap->getPluginResource("db");
            $db = $dbResource->getDbAdapter();
        }
    }
}

Alternatif olarak, varsayılan Zend_Registry bir nesneyi kaydetmek için, sizin Bootstrap sınıfında özel bir init yöntemi yazabilirsiniz:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
  protected function _initDb()
  {
    if ($this->hasPluginResource("db")) {
      $dbResource = $this->getPluginResource("db");
      $db = $dbResource->getDbAdapter();
      Zend_Registry::set("db", $db);
    }
  }
}

Şimdi üç yerine tek adımda db nesneye erişebilirsiniz:

class SomeController extends Zend_Controller_Action
{
    public function init()
    {
        $db = Zend_Registry::get("db");
    }
}

Sonra benim bootstrap yalnızca bir kez, kaynak kayıt erişmek zorunda çünkü Şahsen ben, ikinci teknik kullanır. İlk örnekte benim Kontrolörleri tüm kod aynı blok kopyalamak gerekir.