Archive for November, 2008

Mini-curso solidário

Thursday, November 27th, 2008

Sei que está bem em cima da hora mas é que as últimas semanas tem sido bastante movimentadas. Por isso peço desculpas pela demora ao postar.

Bem, a X25, empresa a qual eu sou um dos instrutores de PHP, está organizando um evento denominado mini-cursos solidários, que consiste em mini-cursos sobre diversos assuntos, com profissionais renomados a preço módico com o intuito de ajudar as crianças carentes que enviam cartinhas ao papai noel para os correios.

Eu apóio o evento e vou ministrar um mini-curso introdutório de 4 horas sobre Zend Framework. Este mini-curso é voltado para aquelas pessoas que já conhecem PHP mas ainda não conhecem o ZF. Será um mini-curso que mostrará os principais conceitos e ajudará como um startup para quem se interessa pela ferramenta.

Para obter maiores informações, por favor siga os links abaixo:

INSCRIÇÕES: http://www.x25.com.br/inscricoes/index.php

INFORMAÇÕES: http://x25.com.br/eventos/minicurso_solidario

Abraço a todos!!!!

Integração do EzComponents com o Zend Framework.

Sunday, November 9th, 2008

Introdução

Recentemente em meu trabalho foi necessário gerar alguns gráficos e então fomos estudar o que havia disponível no mercado o que nos atenderia melhor.
Encontramos o ezGraph, componente do excelente ezComponents, que atendia a todas as nossas necessidades, além de ser open-source e possuir uma licença bem amigável.

O único problema que encontramos foi que o ezComponents utiliza uma estrutura de autoloading própria e o Zend Framework também possui uma estrutura similar que é opcional, mas estávamos utilizando, que é o autoload do Zend_Loader.

O intuito deste post é mostrar como integrar o ezComponents à estrutua de desenvolvimento baseada em Zend Framework mantendo os dois mecanimsmos de autoloading funcionando em paralelo.

Mãos à obra

Para fazer esta integração, precisamos estender a classe Zend_Loader e sobre-escrever alguns métodos.
Eu normalmente crio um diretório lib em minha aplicação e posteriormente um sub-diretório onde eu coloco minhas classes derivadas das classes do Zend Framework.
Neste post, vamos entender que temos uma pasta lib devidamente incluída no include_path do PHP e as nossas classes ficam em um diretório chamado Blog. Ok?

Tendo a estrutura acima criada, vamos criar um arquivo PHP chamado Loader.php dentro do diretório Blog. O conteúdo dele deverá ficar conforme exemplo abaixo:

<?php
include_once 'Zend/Loader.php';

class Blog_Loader extends Zend_Loader
{
public static function loadClass ($class, $dirs = null)
{
parent::loadClass($class);
}

public static function autoload ($class)
{
try {
if ('ezc' == substr($class, 0, 3)) {
include_once 'Base/src/base.php';
ezcBase::autoload($class);
} else {
self::loadClass($class);
}
return $class;
} catch (Exception $e) {
return false;
}
}
}

Como podemos ver, reescrevemos o método autoload, que é o método do Zend Framework que se encarrega de realizar o autoload das classes quando necessário.
Neste método, nós verificamos a cada interceptação, se o nome da classe começa com ezc (que é o padrão adotado pelo ezComponents), se começar com ezc, o método estático autoload da classe ezcBase é invocado informando o nome da classe. A partir daí o ezComponents se encarrega de importar suas classes.

Caso não seja uma classe do ezComponents, o método loadClass da classe Zend_Loader é invocado e o Zend Framework faz o resto.
Simples não?

Para usar, no bootstraper é necessário informar que iremos usar esta classe e para fazer isso é bem simples:

<?php

// Início do seu bootstraper

// Carregando o Zend_Loader
include_once 'Blog/Loader.php';
Zend_Loader::registerAutoload('Blog_Loader');

// Final do seu bootstrapper

Agora já era, você não vai mais precisar lembrar que precisa fazer includes.

Considerações finais

Tanto o Zend Framework quanto o ezComponents possuem uma empresa que os mantém, possuem uma documentação bem feita e completa em seus respectivos sites, então o uso em conjunto dessas ferramentas podem tornar o nosso dia-a-dia mais fácil e nossos softwares mais poderosos (vamos conquistar o mundo :-) ) porque aí nos focamos mais nos nossos negócios deixando a abstração da nossa estrutura de desenvolvimento a cargo dessas ferramentas.

Existem controvérsias a respeito de se usar ou não o autoload e aí você que é responsável pela aplicação deverá colocar os pró e contras de se usar autoloading em uma balança e decidir se vale a pena ou não.

O Zend Framework pode ser encontrado em: http://framework.zend.com e o ezComponents em: http://www.ezcomponents.org/

Espero que este dica seja útil pra você.
Um abraço.