Zend Yükleyici'ye devre dışı

6 Cevap php

Nasıl Zend_Loader_Autoloader devre dışı bırakabilirsiniz?

6 Cevap

Elle boşaltmak için Autoloader zorlayacağını, ancak bu bileşenler, tescil ediliyor bağlı derde yol açabilir: Diğer yükleyici kapakları emin olun.

spl_autoload_unregister(array('Zend_Loader_Autoloader','autoload'));

Ben Zend_Loader_Autoloader yapıcısı bu soyulmuş ve sınıfının dışında çalışmak ve kaydını yerine yükleyici kayıt değiştirdi.

Eğer Zend_Application kullanıyorsanız, sizin index.php, ZA örneğini oluşturduktan sonra, / ZF kullanmak istediğiniz autoloader ayarlayabilirsiniz alabilirsiniz:

$app = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/config.ini');
$app->getAutoloader()->setDefaultAutoloader('yourAutoloader');
$app->bootstrap()->run();

HTH

Ben otomatik olarak PHP ortamı, autoloading ve önyükleme kurar, size Zend_Application kullandığınız varsayalım. Bu çok kullanışlı. Ne yazık ki, Zend_Autoloader sert yapıcı içine kodlanmıştır, ve bunu geçersiz kılmak için herhangi bir yol göremiyorum kurma:

public function __construct($environment, $options = null)
{
    $this->_environment = (string) $environment;

    require_once 'Zend/Loader/Autoloader.php';
    $this->_autoloader = Zend_Loader_Autoloader::getInstance();

    //snip
}

Benim ilk önerim bir Zend_Autoloader yapmak için yol ve uyum içinde diğer autoloader iş bulmak olacaktır. Ben herhangi bir sorun ile yeni Doctrine::IsolatedClassLoader ile Zend_Autoloader kullanarak oldum. Autoloader ad alanları hakkında açık olma veya kullanma konusunda tavsiye pushAutoloader() geçerli olup, çalışması gerekir.

Bu bir seçenek değilse Ancak, muhtemelen Zend_Application kullanarak terk ve çevre setup ve kendinizi önyükleyebilir işlemesi gerekir. Bir rahatsızlık iken, çok zor olmamalı oluyor. Önceki sürüm 1.8 (Zend_Application tanıştığında olan) en ZF öğreticiler örnekler vermiştir.

İşte bu bazı ayrıntılı slaytlar (şimdi eski) set bulunuyor:

Getting Started With Zend Framework v1.6 için

Sizin bootstrap.php ne hakkında

protected function _initAutoloader()
{

       $this->getApplication()
            ->getAutoLoader()
            ->unregisterNamespace("Zend");

       // or 
       $this->getApplication()
            ->getAutoloader()
            ->removeAutoloader();
}

Zend_Loader :: registerAutoload (false 'Zend_Loader',);

Onun çerçeve belgelerinde http://framework.zend.com/manual/en/zend.loader.html#zend.loader.load.autoload

Ancak, ben size zend autoloader bırakarak herhangi bir sorun sürece spl_autoload_register kullanarak özdevinimli_yükle geri arama kayıt olarak etkin () bu yüzden Autoload yığınına eklendi alır olmalı sanmıyorum.

Spl_autoload_register kullanarak, tüm geri çağrıları isteği karşılamak için denemek için çağrılır. Geri arama başarılı bir kez zincir kesintiye olacak eğer ben bilmiyorum. O zaman onun muhtemelen geri çağrıları doğru veya yanlış dönen tarafından kontrol etmezse.

Ben diğer autoloader örneği tarifesi ve ne Ad maç diyebilirsin Yükleyici'ye yorum "itme autoloader" yöntemi kullanılarak öneririm. Bu nedenle zerdüştlerin biriyle autoloader birlikte kullanabilirsiniz ...