sexta-feira, 30 de setembro de 2011

Criando Helpers para o controller

Olá meus amigos tudo bem? Hoje vou falar de forma rápida (como sempre) uma forma de utilizar Helpers no Controller, ou seja nas action do ZEND FRAMEWORK.

Muitas vezes precisamos fazer coisas repetidas que refere-se a camada de negócio, um calculo, uma validação, um tratamento de string, uma rotina e etc... 
E ai pensando em reutilização buscamos uma forma prática de não precisar fazer a mesma coisa duas vezes certo? E ainda não vamos fazer coisas que não refere-se ao banco de dados na model certo?

Mas ai começam as dúvidas... Onde exatamente vou fazer essa função? Não queiro deixar em um controller específico pois e se eu precisar utilizar em outro controller? Como faço? Muito provavelmente você que utiliza o ZF vai se pergunta se existe algum helper simples como o da view...e a resposta é: SIM, EXISTE e isso chama-se ACTION HELPERS utiliza-las é tão simples como aquelas da view...

Vamos para a configuração da bixinha...
Vá em seu bootstrap e no construtor adicione:


    1. $loader = Zend_Loader_Autoloader::getInstance();
      $loader->registerNamespace('Helper_');                                             


 depois adicione esse método:

    1. protected function _initHelpers() {
    2.  Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH . '/controllers/helpers');  
    3. }                                             


Veja bem estamos ai adicionando a localização dos nossos helpers. Alguns desenvolvedores talvez reclamem isso que fiz pois estou colocando os helpers dentro de uma pasta 'helpers' no controller da minha aplicação ou seja, é claro que nesse caso não estou trabalhando com modulos... mas vc que trabalha com modulo pode facilmente apontar esses helpers para um acesso mais GLOBAL da aplicação, a idéia aqui é ensinar como montar o helper simples 

BELEEEEEEEEEEEEEEZA? 








OK então vamos dar um exemplo do uso, vou montar um helper genérico ta? Ou seja, sem algo muito util que vai receber uma string e retornar ela maiuscula, outro que retorna a quantidade de caracteres e mais algumas de string (claro que na maioria das vezes vou utilizar uma função nativa do php mas ai só uso em um lugar certo? 

Então vamos em nossa aplicação no diretório do controller que apontamos la no bootstrap (/application/controllers/helpers) e vamos criar um arquivo chamado String.php e nele fica assim:



Examplo de como utilizar um Action Helper
  1. class Zend_Controller_Action_Helper_String extends Zend_Controller_Action_Helper_Abstract {
  2.     public function maiusculo($string)
  3.     {
  4.         return strtoupper($string);
  5.     }
  6.        
  7.    public function conta($string)
  8.    {
  9.         return strlen($string);
  10.     }
  11.    public function minusculo($string)
  12.    {
  13.         return strtolower($string);
  14.     }
  15. }
Certo, criamos ai helper para string com métodos que retornam a string maiúscula, conta ela e mínuscula, veja que precisamos estender da Zend_Controller_Action_Helper_Abstract agora é só chamar o helper no controller assim:


  1. class TesteController extends Zend_Controller_Action
  2. {
  3.     public function indexAction()
  4.     {
  5.       echo $this->_helper->getHelper('String')->maiusculo('oi helper');
  6.     }
  7. }


Pronto, essa é a forma simples de utilizar, agora pense na quantidade de facilidades que vc pode fazer com esses helpers ainda mais quando for referente a processos da camada de negócio de forma repetitiva não é? 

Por hoje é só meus amigos! Aproveitando o final do post... Hey comunidade PHP em todo o brasil logo logo chega o PHP CONFERENCE 2011 e eu acho que vale apena todo mundo ir no evento, independente do conhecimento... A comunidade PHP vem evoluindo muito e para que isso continue acontecendo precisamos apoiar sempre.

PHP Conference Brasil

Eu não vou de vip, não sou palestrante e muito menos tenho ligação com os organizadores, só pretendo ir e contribuir com a comunidade e acho que vc deveria fazer o mesmo :]...

Valeuuu, e nos vemos no PHPCONFERENCE 


4 comentários: