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
.
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?