Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Augusto

[Resolvido] Inicializar um er Explícitamente

Recommended Posts

O título diz tudo,mas vamos ver como cheguei a isso...

 

Estava categorizando os métodos da minha superclasse pré-framework em diferentes helpers, para facilitar a manutenção, pois, até o presente momento, acredito ser para isso que eles servem.

 

Tudo certo.

 

Na classe adaptadora da Smarty, que permite que a mesma atue como View fui tentar usar um dos métodos de um desses helpers para obter o ID do tema utilizado pelo sistema (parte do caminho do diretório de templates).

 

Só pra constar, inicialmente estava fazendo em conjunto com Zend_Config_Ini e Zend_Registry e não achei muito ptofissional.

 

Continuando...

 

Acontece que nada feito, pois $this -> _helpers é membro de Zend_Controller_Action e esta classe adaptadora da Smarty extende Zend_View_Abstract

 

Na própria documentação diz:

 

You may also instantiate helpers explicitly. You may wish to do this if using the helper outside of an action controller, or if you wish to pass a helper to the helper broker for use by any action. Instantiation is as per any other PHP class.

E é justamente isso que estou tentando fazer. Acessar um Helper fora de Zend_Controller_Action

 

Rodei a seção do manual mas não encontrei como fazer. E peloGoogle, só me remetia ao manual.

 

O DevZone da Zend também não ajudou muito.

 

Então, como se faz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Critiquei o DevZone mas acabei encontrando a solução através de um de seus artigos.

 

Bem, segue a solução, inclusive, visualmente, de forma a se parecer como um Action Helper através do broker.

 

Tudo no prórpio construtor da classe:

 

Zend_Controller_Action_HelperBroker::addPath( BASEPATH . 'application/controllers/helpers' );
$this -> _helper = Zend_Controller_Action_HelperBroker::getStaticHelper('Nome_do_Helper');
Claro, para se usar $this -> _helper deve-se criar a variável fora do construtor, com visibilidade private.

 

Com essas duas linhas (três indiretamente) já é possível acessar os métodos normalmente.

 

Porém, uma dúvida surgiu e o artigo do DevZone não explicou. Não foi mencionado a necessidade da primeira linha, porém só deu certo com ela.

 

Mas por quê? Se ela já consta no bootstrap como configuradora dos Helper em "nível global" da aplicação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.