Como usar o Zend_Loader Corretamente

Ao contrário que muitos imaginam, o componente Zend_Loader não foi feito para substituir o required_once. Ele serve para carregar arquivos e classes dinamicamente de forma segura. Os casos normais de includes com os nomes de arquivos estáticos devem ser mantidos como abaixo.

require_once 'Zend/Controller/Front.php';
include 'hello.phtml';

O Zend_Loader deve ser usado quando o nome do arquivo for variável.

require_once 'Zend/Loader.php';

$className = 'Db_' . $_GET['adapter'];
Zend_Loader::loadClass($className);

$hello = $_GET['hello'] . '.phtml';
Zend_Loader::loadFile($hello);

Você pode passar um segundo parâmetro $dirs como string ou array de strings contendo diretórios para pesquisar.

$dirs = 'my/lib/';
Zend_Loader::loadClass($className, $dirs);

E para o método loadFile você pode passar um terceiro parâmetro $once como bool para utilizar como include_once.

Existe também o método registerAutoload para carregar as classes automaticamente de acordo com o padrão de classes e diretórios (My_Class => My/Class.php).

require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();

$front = Zend_Controller_Front::getInstance();

Você pode criar sua classe de autoload bastando adicionar o método estático autoload e registrar a classe no Zend_Loader.

class MyLoader
{
    static public function autoload($class)
    {
        
    }
}

require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload('MyLoader');

O autoload é recomendado para a parte concreta do projeto, pois ajuda no desenvolvimento e tráz melhorias de performance. Na implementação de componentes deve se mander o uso do require_once.

Uma resposta em “Como usar o Zend_Loader Corretamente

  1. Não entendi a parte: “Na implementação de componentes deve se mander o uso do require_once”. Poderia explicar melhor, com exemplo se possível?

Os comentários estão desativados.