23 JanCurso de PHP – Módulo Básico – Estrutura de Controle – Parte 5

Curso de PHP – Estrutura de controles

Durante o desenvolvimento de um projeto é muito comum que o sistema precise receber alguma informação e com base nessa informação, tomar um decisão para escolher o próximo caminho(ou bloco de comandos) a ser executado. Um exemplo rápido disso é o login. Caso a pessoa esteja logado no site, o mesmo deve apresentar um conteudo diferente do caso do usuário ser apenas um visitante. Vamos ilustrar esse exemplo, com 2 estruturas de controle encontradas no PHP.

if / else

o comando “if” com certeza é o mais conhecido na área da programação. Você faz uma pergunta para o PHP e caso essa seja verdadeira, ele irá executar o que lhe foi mandado, ou caso seja falsa, executará outro bloco (opcional)

ex:

if($logado == true){
   echo "Olá usuário logado.";
}

Esse bloco acima, irá imprimir a mensagem entre aspas, caso a variavel $logado seja verdadeira. Se ela for falsa, nada acontece. Agora veja o mesmo exemplo com else:

if($logado == true){
   echo "Olá usuário logado.";
}else{
   echo "Olá visitante.";
}

Esse diferencial será executado, apenas quando a condição do IF for falsa. Então, se o usuário não estiver logado, o sistema irá trata-lo como visitante. Para aninhar ifs,  isto é, realizar várias validações no mesmo bloco, você pode usar o camando elseif. Veja o exemplo modificado a seguir:

if($logado == 1){
   echo "Olá usuário logado.";
}elseif($logado==2){
   echo "Olá Administrador.";
}else{
   echo "Olá visitante.";
}

Percebe a diferença? Antes do PHP escapar para o ELSE, ele faz mais uma verificação para ver se a váriavel $logado possuí o valor 2. Caso seja verdadeiro, ele imprime a mensagem senão, cai no else normalmente.

O PHP nos fornece uma outra estrutra chamada “switch”. Ela nos permite fazer “IFs aninhados” de forma muito mais elegante. A diferença é que a expressão para  todas as opções deve ser a mesma (enquanto no “if aninhado” você pode mudar a expressão). Outros dois detalhes importante são que: ao fim de cada bloco de opções, você deve adicionar a palavra reservada “break” para que o interpretador não continue executando os outros códigos e que o “else” não existe no switch. O comando que realiza a mesma função dele chama-se “default”. veja o mesmo exemplo do “if aninhado” reescrito com switch:

switch($logado){
   case 1: echo "Olá usuário logado.";
              break;
   case 2: echo "Olá Administrador.";
              break;
   default: echo "Olá visitante.";
}

O Código fica muito mais elegante e limpo. Principalmente quando existem muitos caminhos diferentes para seguir.

18 JanDica – PHP 5.3, Apache 2, Postgres e Zend Framework no Windows Seven

Estou com a versão de testes do Windows Seven (Home Premium), instalada em minha máquina. O sistema está tão rápido e estavel quanto o XP era. A única diferença é que ele é muito mais bonito e usual. Enquanto não me sobra grana para comprar um Mac, ficarei com esse mesmo ^^

Precisei configurar meu ambiente de desenvolvimento nessa versão do windows e estou postando aqui só para dizer que tudo funciona corretamente. Na verdade, eu só tive problemas de compatibilidades com programas simples e que não me faziam falta. Muito estranho, haha. Enfim, só para constar:

Windows Seven – Home Premium

  1. Zend Server CE (php 5.3, Apache 2.2, Zend Framework 1.9)
  2. Postgres 8.x
  3. Netbeans 6.8

A única coisa chata é que o Zend Server, por padrão, instala no arquivos de programas e essa pasta precisa de permissão para poder alterar os arquivos. Mas a única coisa que precisa fazer é clicar com o direito nela, selecionar a aba de segurança e adicionar controle total para o seu usuário. Ou, se você for mais organizado, altere as configurações do Apache para apontar o DocumentRoot para outro local.

Esse pequeno post é só para informar,

12 DecCurso de PHP – Módulo Básico – Variáveis e Constantes – Parte 4


Variáveis

Variáveis são endereços de memória que contém valores que podem ser acessador pelo seu sistema. Você pode guardar os mais diversos tipos de dados em uma variável, desde texto puro até valores booleanos(verdadeiro ou falso) passando por números inteiros e decimais.

No PHP as variáveis podem ser criadas dinâmicamentes, sem precisar ser declaradas anteriormente (Apesar de ser uma boa forma de deixar seu código legível), outro ponto forte é o fato de PHP possuir uma tipagem fraca de variáveis, não interferindo no tipo de dados que você seta nela e podendo alterar o formato a qualquer momento sem usar nenhum tipo de conversão. As  variáveis começam sempre com o caractere “$” (cifrão) seguido pelo nome dela e devem seguir algumas regras para ser uma variável válida.

  • Um nome de variável válido se inicia com uma letra ou sublinhado, seguido de qualquer número de letras, algarismos ou sublinhados
  • Não podem começar com números
  • Não podem conter caracteres especiais (#, %, /, \, (, ), …, etc)
  • As variáveis são case-sensitive, isto é, o interpretador do PHP irá fazer distinção entre caracteres maiusculos e minusculos.

Obs: $this é uma variável especial que não pode ser atribuída.

ex.:

<?php
$exemplo_string  = "Isso é um texto";
$exemplo_inteiro = 1;
$exemplo_float   = 1.10;
$exemplo_boleano = false;
?>

O PHP suporta criação de variáveis por referência, isto é, permite que uma variável seja um “apelido” para outra ou um “ponteiro”. Nesse caso, quando qualquer uma das variáveis for alterada a outra será modificado automaticamente .

Veja um exemplo:

<?php
	$original = 'Sou a verdadeira';
	$referencia = &amp;amp;$original;

	echo $original.' - '.$referencia;
?>

Esse pequeno exemplo irá imprimir:

-> Sou a verdadeira – Sou a verdadeira

OPERAÇÕES COM VARIÁVEIS

> = Maior que

>= = Maior ou igual à

< = Menor que

<= = Menor ou igual à

== = Igual à

=== = Realmente igual à (Compara os valores e os tipos dos dados)

$a++ = Testa $a e depois incrementa em 1

$a– = Testa $a e depois decrementa em 1

++$a = Incrementa e depois testa $a

–$a = Decrementa e depois testa $a

Todos os operadores:

Para ter acesso a lista atualizada de operadores, acesse:

http://br.php.net/manual/pt_BR/language.operators.php

CONSTANTES

Constantes são um identificador para um valor único e que, como o seu nome sugere, não pode ser alterado em tempo de execução. Por convenção, o nomes de constantes são sempre em maiúsculas e seguem o mesmo padrão de nomes das variáveis.

  • Um nome de constante válido se inicia com uma letra ou sublinhado, seguido de qualquer número de letras, algarismos ou sublinhados
  • Não podem conter o caractere $(cifrão)
  • Não podem começar com números
  • Não podem conter caracteres especiais (#, %, /, \, (, ), …, etc)
  • Por convenção use sempre caracteres maiusculos para as constantes.
  • Constantes podem ser definidas e acessadas de qualquer lugar sem que a regras de escopo de variáveis seja aplicadas;
  • Depois de criadas, as constantes não podem ser eliminadas ou terem seus valores alterados
  • Somente dados escalares (boolean, integer, float e string) pode ser colocados em constantes.

Para criar uma constante utilize o comando “define”, cujo primeiro parametro é o nome da constante e o segundo é o seu valor, ex.:

<?php
	define("PRIMEIRA_CONSTANTE", "Sou uma constante.");
	echo PRIMEIRA_CONSTANTE;
?>

12 DecCurso de PHP – Módulo Básico – Iniciando em PHP – Parte 3

Iniciando em PHP

A partir de agora, iremos supor que você já possui o PHP e o apache corretamente instalados e configurados em sua máquina. Por padrão iremos utilizar nomes de arquivos com extensão .php e recomendamos que você crie uma pasta para cada parte desse curso, assim se manterá organizado e terá seus exemplos armazenados de forma cronológica. Caso você precise de alguma dica em HTML/CSS recomendo o blog do Rafael Fagundes em especial o início do tutorial dele.

Os arquivos de script PHP são todos do tipo texto puro, por isso, você pode programar até no Bloco de Notas se preferir, mas para utilizar toda a agilidade de desenvolvimento que o PHP proporciona, é aconselhavel utilizar algumas dessas opções de IDE:

Com sua IDE preferida corretamente instalada, você já pode dar inicio a sua aprendizagem real do PHP.

Primeiros Passos

Qualquer aplicação que você desenvolver, só irá ser interpretada pelo php se você utilizar a extensão do arquivo examente igual as que você configurou em seu apache. Dentro do seu arquivo é obrigatório que você adicione seus códigos dentro das tags php. São elas:

Para inciciar o bloco de comandos

<?php

Para finalizar o bloco de comandos:

?>

Ex.: Crie um arquivo chamado primeiro_passo_1.php dentro do diretório que você publica suas páginas do apache (htdocs geralmente) e insira as seguintes linhas de código.

<?php
echo "Meu primeiro script PHP";
?>

Agora vamos analizar esse pequeno código.

Linha 1: Ela irá dar inicio ao bloco de código, tudo que estiver abaixo dela será interpretado pelo PHP.

Linha 2: “echo” é um método do PHP que serve para imprimir uma string na saída padrão do script. Já se acostume com ele, pois você dependerá muito dele em seu aprendizado

Linha 2: Perceba que ao final da linha dois existe um “;” (ponto-e-vírgula). Ele é usado para separar comandos em PHP. Ao término de cada instrução você deve obrigatóriamente terminar com o ‘;’ senão o interpretador irá exibir um erro de Parser. (você aprenderá mais sobre os erros nos próximos módulos)

Linha 3: É essa tag a responsável pelo fim do bloco de códigos PHP. Apartir daqui o PHP não executará mais nada.

Chame esse script pelo seu navegador, utilizando a url que você viu na lição passada e veja o resultado.

Mais um exemplo, mas agora abrindo dois blocos de script no mesmo arquivo:


<strong>O meu nome é?</strong>

<?php
echo "Nivaldo";
?>

<strong>Qual módulo estou estudando?</strong>

<?php
echo "Basico - INICIANDO EM PHP";
?>

Com esse exemplo fica claro que o código que será interpretado pelo PHP é apenas o que consta dentro das tags “<?php” e “?>”. Você pode utilizar quantos blocos de código quiser. Nos próximos módulos serão apresentados mais comandos de saída e de string, mas, caso queira brincar um pouco mais com esse script, recomendo que vá alterando o texto passado para o echo e experimente informar algumas tags html junto a ele para testar como o script se comportará no navegador.

12 DecCurso de PHP – Instalação do PHP 5 (Windows) – Parte 2


Instalação do PHP 5 (Windows)

Nesse capítulo vamos ver como instalar o PHP 5 no windows, levando em consideração, que você já possui o apache 2.2.* instalado (http://httpd.apache.org/)

Obtendo o PHP

O primeiro passo da instalação é obter a sua última versão direto no site oficial do PHP (http://www.php.net/downloads.php). No momento em que esse manual foi escrito a ultima versão estável era a 5.3.1. Ná página de downloads, procure pelo link “PHP 5.3.1 zip package” e baixe o arquivo.

Instalando

Para essa versão da instalação o nome do arquivo é: php-5.3.1-Win32.zip, descompacte-o na pasta de sua preferência, sempre lembrando que essa pasta será aonde o PHP será instalado. É recomendado criar uma pasta apenas para o PHP, ex.: C:\php\ (esse será o caminha utilizado no restante do documento, caso você prefira fazer a instalação em outro local, fique atento para manter sempre o mesmo caminho nos outros passos desse capítulo.

Entre na pasta que você instalou o PHP e renomeie o arquivo c:\php\php.ini-dist para c:\php\php.ini

Configurando o php.ini

Abra o php.ini em algum editor de texto de sua preferência e procure pela entrada: doc_root. Então, você deve alterá-la para o local aonde o DocumentRoot do Apache está indicado. No caso desse curso fica assim:

doc_root = “d:\sites”

Desça um pouco mais no arquivo e procure a entrada: extension_dir. Então, você deve trocar o seu valor pelo caminho das extenções, no diretório que você instalou o PHP. No exemplo desse curso ficaria:

extension_dir = “c:\php\ext”

Opcionalmente, você pode alterar a entrada: error_reporting, para:

error_reporting = E_ALL | E_NOTICE | E_STRICT

Com essa modificação o PHP irá mostrar na tela uma mensagem com qualquer erro, notice ou problemas de codifcação que existir. Recomendo habilitar essa opção apenas no seu servidor de teste/desenvolvimento.

Configurando o Apache

Usando o editor de sua preferência, abra o arquivo “c:\Apache2\conf\httpd.conf” (levando em conta que o Apache está instalado nesse diretório) e adicione no final do arquivo as seguintes linhas:

LoadModule php5_module “c:/php/php5apache2_2.dll”

AddType application/x-httpd-php .php

PHPIniDir “c:/php”

Esteja sempre atento em substituir os caminhos do PHP para o local aonde você realizou a sua instalação.

Para que o apache procure primeiro pelo index.php em um diretório, adicione as seguintes linhas (caso esse bloco de instruções já exista, você só precisa aterar ele) .

<IfModule dir_module>

DirectoryIndex index.php index.html default.html

</IfModule>

Finalizando

Com todos os arquivos devidamente alterados, é hora de testar sua configuração.  Para isso, reinicie o seu servidor Apache e verifique se ocorreu algum erro. Para testar seu PHP crie um arquivo simples na pasta “DocumentRoot” que você configurou no Apache (“d:\sites” em nosso exemplo) e adicione as seguintes linhas:

info.php

<?php

phpinfo();

?>

Chame esse arquivo pelo seu navegador preferido, utilizando a seguinte URL:

http://localhost/info.php

O navegador irá exibir todo o conjuto de informações a repeito do PHP que está instalado em seu servidor.

12 DecCurso de PHP – Módulo Básico – Parte 1



Nos ultimos tempos, o número de visitantes que estão caindo no meu site em busca de apostilas, tutorial, treinamento ou cursos relacionados a PHP tem aumentado drasticamente.  Como eu não gostaria de perder esses visitantes, e pensando mais alto, gostaria de abrir os olhos deles para o Zend Framework, resolvi começar a postar artigos a respeito do PHP.

Essa primeira parte, vai servir para iniciar você no PHP. Aguardo suas sugestões, criticas e suas recomendações (caso conheça alguém que esteja iniciando no PHP, sugira esse artigo). Agora, vamos ao que interessa!

Histórico

A linguagem surgiu por volta de 1994, como um pacote de programas CGI criados por Rasmus Lerdof, com o nome Personal Home Page Tools, para substituir um conjunto de scripts Perl que ele usava no desenvolvimento de sua página pessoal. Em 1997 foi lançado o novo pacote da linguagem com o nome de PHP/FI, trazendo a ferramenta Forms Interpreter, um interpretador de comandos SQL.

Mais tarde, Zeev Suraski desenvolveu o analisador do PHP 3 que contava com o primeiro recurso de orientação a objetos, que dava poder de alcançar alguns pacotes, tinha herança e dava aos desenvolvedores somente a possibilidade de implementar propriedades e métodos.

Pouco depois, Zeev e Andi Gutmans, escreveram o PHP 4, abandonando por completo o PHP 3, dando mais poder à máquina da linguagem e maior número de recursos de orientação a objetos. O problema sério que apresentou o PHP 4 foi a criação de cópias de objetos, pois a linguagem ainda não trabalhava com apontadores ou handlers, como é a linguagem Java.

O problema fora resolvido na versão atual do PHP, a versão 5, que já trabalha com handlers. Caso se copie um objeto, na verdade copiaremos um apontador, pois, caso haja alguma mudança na versão original do objeto, todas as outras também sofrem a alteração, o que não acontecia na PHP 4.

O que é o PHP?

PHP, é um acrônimo que significa “PHP: Hypertext Preprocessor”, é uma linguagem de programação “server-side”, interpretada, que foi especialmente desenvolvida para a internet e pode ser embutida dentro do código HTML. A sintaxe da linguagem lembra C e Perl,  é fácil de aprender e tem um mercado muito grande tanto dentro quanto fora do Brasil. O objetivo principal da linguagem é permitir a desenvolvedores escreverem páginas dinâmicas  rapidamente, mas o PHP permite que você faça muito mais do que isso com ele, principalmente depois de lançada a versão 5 , que foi inteiramente reformulada para trabalhar com orientação a objetos.

Ser “server-side”, significa que o PHP é executado no servidor. Mesmo mesclando o php com código HTML, quando algum usuário fizer uma requisição à página, o servidor iá executar todo o código PHP que existir para só depois enviar o resultado para o navegador do usuário. Isso significa que seus códigos ficarão seguros dentro do servido e o visitante não conseguirá visualizar eles. Você pode inclusive configurar seu servidor para processar todos os seus arquivos HTML como PHP, e então não haverá nenhum modo dos usuários descobrirem que se você usa essa linguagem ou não. Outra vantagem nesse tipo de linguagem é que o cliente não precisa fazer procesamento algum, o servidor se encarrega de tudo.

Por ser multiplataforma, ela roda nos mais diversos sistemas operacionais. Windows, Linux, Mac OS, *BSD etc). PHP é uma linguagem livre e de código fonte aberto. Para saber mais sobre ela, acesse o site oficial:

http://www.php.net

Características

  • Velocidade e robustez
  • Velocidade de desenvolvimento
  • Facilidade de aprendizagem
  • Estruturado e/ou orientado a objeto
  • Portabilidade – independência de plataforma – escreva uma vez, rode em qualquer lugar
  • Muito bem difundida
  • Tipagem fraca
  • Sintaxe similar a Linguagem C/C++ e o PERL

Referências

08 DecDica rápida – Postgres SQL – Funções úteis

Não, o blog não morreu! Só está meio largado para as traças devido a correria de fim de ano. Pretendo começar a testar algumas coisas novas, então em breve postarei alguns lançamentos e meus resultados aqui para vocês. Quem quiser sugerir algo, pode fazer no formulário que contato que tem na página “Sobre;-)

Bom, vamos as dicas!

Somar 10 dias a partir da data atual:

SELECT current_date + 10

md5 no postgres:
Sim! Postgres tem suporte nativo a md5. Transformar uma string em md5

SELECT md5('lalalala')

Transformar uma coluna em md5

SELECT md5(nome) from pessoas

Como é proncuniado o nome: PostgreSQL?
PostgreSQL é pronunciado Post-Gres-Q-L. [Escutar]

07 SepZend Framework – Tutorial – Personalizando os decorators

php, zend, hospedagem, ajax, programação, tutorial, curso, apostila, site, criar site, html
Continuando o tutorial sobre decorators, vou abordar agora como personalizar as tags entre os campos. Como todo mundo deve estar cansado de saber, por padrão o ZF cria o formulário HTML dentro das tags DL/DT/DD. As vezes é conveniente para o layout que os campos fiquem entre DIVs e os rótulos entre as tags LABEL.

Nesse tutorial, além de resolver o problema das tags vamos criar uma feature a mais. Todos os campos que forem requeridos (setRequired(true)), irão receber automáticamente um “*” no seu rótulo.



Escrevendo o decorator

<?php
class Decorators_Composite extends Zend_Form_Decorator_Abstract implements Zend_Form_Decorator_Marker_File_Interface
{
    public function buildLabel()
    {
        $element = $this->getElement();
        $label = $element->getLabel();
        if ($translator = $element->getTranslator()) {
            $label = $translator->translate($label);
        }

        /* Se o elemento for requerido, será adicionado um "*" após o seu nome */
        if ($element->isRequired()) {
            $label .= '*';
        }
        $label .= ':';
        return $element->getView()
                       ->formLabel($element->getName(), $label);
    }

    public function buildInput()
    {
        $element = $this->getElement();
        $helper  = $element->helper;
        return $element->getView()->$helper(
            $element->getName(),
            $element->getValue(),
            $element->getAttribs(),
            $element->options
        );
    }

    public function buildErrors()
    {
        $element  = $this->getElement();
        $messages = $element->getMessages();
        if (empty($messages)) {
            return '';
        }
        return '
<div class="errors">' .
               $element->getView()->formErrors($messages) . '</div>
';
    }

    public function buildDescription()
    {
        $element = $this->getElement();
        $desc    = $element->getDescription();
        if (empty($desc)) {
            return '';
        }
        return '
<div class="description">' . $desc . '</div>
';
    }

    public function render($content)
    {
        $element = $this->getElement();
        if (!$element instanceof Zend_Form_Element) {
            return $content;
        }
        if (null === $element->getView()) {
            return $content;
        }

        /* Gera todos os códigos */
        $separator = $this->getSeparator();
        $placement = $this->getPlacement();
        $label     = $this->buildLabel();
        $input     = $this->buildInput();
        $errors    = $this->buildErrors();
        $desc      = $this->buildDescription();

        /* Cria o elemento usando div */
        $output = '
<div class="form element">'
                . $label
                . $input
                . $errors
                . $desc
                . '</div>
';

        switch ($placement) {
            case (self::PREPEND):
                return $output . $separator . $content;
            case (self::APPEND):
            default:
                return $content . $separator . $output;
        }
    }
}
?>

Salve esse arquivo dentro de library/Decorators/Composite.php



Utilizando o decorator personalizado

No form que você desejar, adicione esses 2 blocos de códigos em php:
php, zend, hospedagem, ajax, programação, tutorial, curso, apostila, site, criar site, html




No começo da classe(inclui o decorator):

$this->addElementPrefixPath('Decorators', 'Decorators/', 'decorator');

Esse vai bem no final da classe(Ativa o decorator):

$this->setElementDecorators(array('Composite'));

É isso, aos poucos vamos desvendando por completo os decorators, que tem material até para fazer uma apostila. hehe.

^^

26 AugZend Framework – Criando Action Helpers

Conforme eu havia prometido aqui, hoje eu estarei dando continuidade aos meus tutoriais sobre helpers. O action helper, assim como view helper, serve para melhorar o reaproveitamento de códigos e manter seus controllers o mais limpo possível.

Na empresa aonde trabalho, o primeiro problema que apareceu no uso do ZF foi a criação constante de formulários. Esse processo nos forçava a criar vários “getForms“, muitos deles com o mesmo código. Vamos generalizar esse tipo de código, criar um helper e ser mais feliz!


Configurando

Mais uma vez, estarei levando em consideração que você está utilizando o padrão MVC com plugins do ZF (padrão que o zend studio cria). Já recebi vários emails do tipo “Como configurar o ZendFramework” ou então “Como criar a primeira aplicação com o ZF”. Prometo postar algo sobre isso em breve. Vamos lá:

Adicione a seguinte linha no seu plugin “Initializer.php” (ou em seu bootstrap, caso esteja configurado de outra forma)

Zend_Controller_Action_HelperBroker::addPath($CAMINHO_FISICO . '/library/helpers/', 'Zend_Controller_Action_Helper');

Tenha em mente que a váriavel $CAMINHO_FISICO deve conter o caminho da sua aplicação no servidor.

Com essa linha configurada corretamente o ZF já vai conseguir “enxergar” o seu helper.


Criando o Action Helper

<?php
/**
* Cria o objeto do form indicado.
* @author Nivaldo Arruda - nivaldo@gmail.com
* @version 1.0
*/

class Zend_Controller_Action_Helper_Formulario extends Zend_Controller_Action_Helper_Abstract
{

/**
* instancia o formulario.
* Exemplo para o parametro: $opcoes
* $opcoes['id'] = Para salvar uma edição de dados
* $opcoes['url'] = url da action
*
* @param string $formulario
* @param Array $opcoes
* @return Object
*/
public function criar($formulario, array $opcoes=null)
{
//Caso o seu autoload esteja habilitado, essa linha pode ser comentada
require_once $formulario.'.php';

$id = $opcoes['id'];

/**
* Gera o parametro "id" caso o mesmo seja informado (para URL de editar);
*/
if($id)
$id = "/id/".$id;

/**
* Instancia o formulario informado
*/
$form = new $formulario(array(
'action' => $opcoes['url'].$id,
'method' => 'post',
'id' => $formulario,
), $opcoes);

return $form;
}

}

Perceberam que é uma classe bastante simples não? Mas para um sistema comum, com muitos cadastros, ela é essencial e vai te economizar bastante linhas de códigos =)


Utilizando
Para chamar essa classe é simples. Adicione a seguinte linha no seu controller:

$opcoes['url'] = '/usuarios/salvar';
$form = $this->_helper->Formulario->criar('usuarioForm', $opcoes);

Esse código irá instanciar um objeto do tipo “usuarioForm” dentro da váriavel $form. Só lembre-se que o nome da classe do seu form deve ser “usuarioForm” e o arquivo dela: usuarioForm.php.


Código bem simples, para exemplificar os actions helpers, que serão um grande aliado seu do dia a dia.


^^

11 AugZend Framework – Criando um View helper

O blog está um pouco parado, então irei reanima-lo um pouco. Vou continuar seguindo a linha MVC do ZF e hoje vou abordar um dos principais problemas que essa implementação pode trazer: Views sujas com códigos.

O conceito de MVC nasceu justamente para manter as views (interface com o usuário) completamente separadas dos códigos e das regras de negócio. Com o ZF ela já fica um pouco poluída (para quem estava acostumado com smarty, o primeiro contato é um desespero só). Então programadores, vamos tentar manter essa distinção e vamos fazer mais uso dos “Views helpers”.

O que são os Views Helpers?

Views Helpers são classes que fazem o papel de abstrair os códigos que possivelmente ficarão na view. Seja um foreach para preencher dados de tabela ou de combobox, seja para formatação de nomes/datas ou qualquer outro fim. Fora tirar todo esse código sujo da sua view, você ainda pode reaproveita-las para outras telas.

Criando o Helper

No padrão MVC do zend, existe uma pasta chamado views, dentro de views existe mais 2 pastas (scripts e helpers). Crie seu arquivo dentro da pasta helpers, com o nome do seu helper. Em nosso exemplo: Data.php

Zend Framework - MVC - Diretorios

Zend Framework - MVC - Diretorios

Codificando

<?php
/*
 * Helper que retorna o uma data em vários formatos diferentes.
 * ex: echo $this->Data('2009-18-11')->extenso;
 * ex: echo $this->Data('2009-18-11')->pt_br;
 * ex: echo $this->Data('2009-18-11 09:11:00')->hora;
 * @author Nivaldo Arruda - nivaldo@gmail.com
 * @see www.nivaldoarruda.com.br
 * @version 1.0
*/
class Zend_View_Helper_Data extends Zend_View_Helper_Abstract
{
    public $extenso;
    public $pt_br;
    public $hora;

    public function data($data)
    {
        list($ano, $mes, $dia) = explode("-", substr($data, 0, 10));

        $this->extenso = $this->diasemana("$ano-$mes-$dia");
        $this->pt_br = "$dia/$mes/$ano";

        if(strlen($data)>10){
            list($hora, $minuto, $segundo) = explode(":", substr($data, 11, 8));
            $this->hora = "$hora:$minuto:$segundo";
        }

        return $this;
    }

    /**
     * Retorna o dia da semana, por extenso e em português, correspondente
     * a data informada por parametro (no padrão aaaa-mm-dd).
     *
     * @param Date $data
     * @return String
     */
    public function diasemana($data){
        list($ano, $mes, $dia) = explode("-", $data);

        $diasemana = date("w", mktime(0, 0, 0, $mes, $dia, $ano));

        switch($diasemana) {
            case 0: $diasemana = "Domingo";
                    break;
            case 1: $diasemana = "Segunda-Feira";
                    break;
            case 2: $diasemana = "Terça-Feira";
                    break;
            case 3: $diasemana = "Quarta-Feira";
                    break;
            case 4: $diasemana = "Quinta-Feira";
                    break;
            case 5: $diasemana = "Sexta-Feira";
                    break;
            case 6: $diasemana = "Sábado";
                    break;
        }

        return $diasemana;

    }
}
?>

Entendendo

Perceba a linha da assinatura da classe:

class Zend_View_Helper_Data extends Zend_View_Helper_Abstract

O nome do arquivo “Data” Deve ser igual ao sulfixo do nome da classe (tome sempre cuidado com o case-sensitive).

O nome do método principal, também deve ser igual ao do arquivo, mas esse em caixa-baixa (minusculo):  “data”

public function data($data)

Para rodar esse helper, em uma de suas views, execute o código que está comentado no cabeçalho da classe:

Exemplo de uso

echo $this->Data('2009-18-11')->extenso;
echo $this->Data('2009-18-11')->pt_br;
echo $this->Data('2009-18-11 09:11:00')->hora;

Agora use a imaginação e mantenha suas Views limpas!

Próximo passo: Action Helpers!

^^

SEO Powered by Platinum SEO from Techblissonline