Skip to content

Elton Luís Minetto

Site pessoal de Elton Minetto

Novidades sobre o Zend Framework na prática!

Hoje precisei fazer uma tarefa que acabou me levando a descobrir uma nova ferramenta. A tarefa em questão era: “exportar para uma lista os e-mails de todas as pessoas que compraram o meu e-book“. Toda venda realizada com sucesso o Pagseguro me envia um e-mail avisando da venda, e um script PHP que eu criei envia o PDF do e-book para o e-mail do comprador. Então teoricamente só precisaria exportar essa lista de e-mails enviados da minha conta do Gmail para um arquivo TXT.
Após pesquisar algumas alternativas cheguei ao Got Your Back (GYB). É um script Python que serve para fazer um backup/restore de todos os e-mails da sua conta do Gmail. Ele salva todas as mensagens em pastas separadas por ano/mes, no formato .eml, o que facilita o uso de alguma ferramenta de busca de textos como o find do MacOSX/Linux. E para facilitar ainda mais ele gera um banco de dados SQLite com os detalhes da mensagem (from, to, subject), então é só fazer uma consulta SQL e você tem acesso a todas as suas mensagens.
Achei bem útil e fácil de usar, então resolvi compartilhar.

10 programadores PHP “das antigas”, compartilhando suas experiências de carreira. O que é isso? Um artigo que estamos publicando no iMasters (a primeira parte já está no ar) e que gerou uma palestra e muita polêmica (nos comentários do artigo).
Vai ficar de fora? Dê sua opinião e compartilhe suas dicas. Só tome cuidado com os Trolls :)

Na última semana estive em Osasco-SP para a sexta edição do PHPConference, o maior evento de PHP da América Latina.
Novamente pude rever os amigos e lendas da programação PHP, além de conhecer novas pessoas, algumas que eu conhecia via Twitter. Na minha opinião essa é a parte mais importante do evento, a troca de conhecimentos que acontece fora das salas de palestras.
Quanto as palestras, não consegui ver todas as que gostaria, mas as que consegui ver foram muito boas.
Assistindo algumas palestras e conversando com algumas pessoas a sensação que tenho é que o “mundo PHP” ganhou nos últimos meses um novo impulso de qualidade e inovação. Fazia um bom tempo que eu não me sentia empolgado com o ambiente, mas com coisas legais como bancos NoSQL, novos frameworks como Symfony 2, Zend Framework 2, diversos micro frameworks, o Service Oriented Architecture finalmente deixando de ser “tendência” e virando realidade, o MVC evoluindo para algo novo, tudo isso abre novos horizontes para os profissionais.
O material da minha palestra está no meu Speakerdeck e os comentários estão no Joind.in
E que venha o PHPConference 2012!

Alguns dias atrás estava preparando o material de um curso que vou ministrar no PHPConference 2011. O assunto do curso já é bem “denso”: Gearman, Memcached e Sphinx, então não queria aumentar a complexidade incluindo algum Framework, até porque o requisito do curso era apenas “conhecimentos em PHP”.
Então iniciei o desenvolvimento do material usando somente o PHP e me deparei com a situação: “eu não consigo mais trabalhar sem frameworks!!”. Parti então para a busca de um dos novos micro frameworks que surgiram nos últimos meses. Fiz uma pequena (micro?) pesquisa e encontrei algumas opções legais como o Silex, DooPHP, Recess e Slim.
Após uma pequena análise acabei optando pelo Slim. O Silex é muito legal, pois é baseado no Symfony, mas não gostei de ter que usar o Twig para a parte de views, pois isso aumenta a complexidade. O DooPHP me pareceu faltar documentação. O Recess eu gostei bastante, mas vai ficar para um próximo estudo, principalmente a parte de REST, que achei interessante. O Slim me pareceu bem simples e a parte de views é feita por scripts PHP normais, sem precisar de um sistema de templates como o Twig ou Smarty (apesar de ser fácil integrá-los caso desejado).
Usando o exemplo básico do site é possível ver a simplicidade do Slim:

<?php
require 'Slim/Slim.php';
$app = new Slim();
$app->get('/hello/:name', function ($name) {
    echo "Hello, $name!";
});
$app->run();
?>

A idéia dele é fornecer apenas a parte de rotas e views simplificadas, sem se preocupar com a parte de modelos e coisas mais complexas.

Organizando o projeto

Com um pouco de esforço é possível fazer um projeto pequeno mas bem organizado usando-se o Slim. Abaixo a minha “receita” de projeto.

Estrutura de diretórios

config
controllers
docs
public
	images
	scripts
	styles
index.php
vendors
	Slim
views

Conteúdos dos arquivos

.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !\.(js|ico|gif|jpg|png|css|htm|html)$ index.php

index.php

<?php
require 'vendors/Slim/Slim.php';
define('CONTROLLERS_PATH', './controllers/');
define('VIEWS_PATH', './views/');

$app = new Slim(array(
    'templates.path' => VIEWS_PATH
));
$controllerDir = opendir(CONTROLLERS_PATH); 
while ($controller = readdir($controllerDir)) {
	if($controller != '.' && $controller != '..')
		require CONTROLLERS_PATH . $controller;
}
$app->run();

Desta forma basta adicionar arquivos no diretório controllers e views. Um exemplo de controller e view

config/db.php

<?php
$dsn = 'mysql:host=localhost;port=3306;dbname=gallery';
$usuario = 'root';
$senha = '';
?>

controllers/Gallery.php
<?php
$app->get('/', function() use ($app) {
	require 'config/db.php';
	$pdo = new PDO($dsn, $usuario, $senha);
	$stmt = $pdo->query('SELECT * FROM gallery');
	$data = $stmt->fetchAll();
	$app->render('index.phtml', array('data' => $data));	
});

$app->get('/gallery/:id', function($id) use ($app) {
	require 'config/db.php';
	$pdo = new PDO($dsn, $usuario, $senha);
	$stmt = $pdo->query("SELECT * FROM gallery where id = $id");
	$gallery = $stmt->fetchAll();
	$stmt = $pdo->query("SELECT * FROM image where gallery_id = $id");
	$images = $stmt->fetchAll();
	$app->render('gallery.phtml', array('gallery' => $gallery, 'images' => $images));
});
?>

views/index.phtml
<h2>Galerias</h2>
<div id="gallery">
<?php if(isset($data)): ?>
	<?php foreach($data as $d): ?>
		<p><a href="/gallery/<?php echo $d['id'];?>"><?php echo $d['name'];?></a></p>
	<?php endforeach;?>
<?php endif;?>
</div>

views/gallery.phtml
<h2> <?php echo $gallery[0]['name']?></h2>
<h3><?php echo $gallery[0]['description']?></h3>
<?php foreach($images as $i): ?>
	
	<a href="/images/<?php echo $i['gallery_id'];?>/<?php echo $i['filename'];?>"  target="_blank">
		<img src="/images/<?php echo $i['gallery_id'];?>/<?php echo $i['filename'];?>200.png">
	</a>
<?php endforeach;?>
<p><a href="/">Voltar</a></p>

Claro que o Slim não substitui um framework completo como o Zend Framework ou o Symfony, mas para projetos pequenos, provas de conceito ou coisas mais simples ele é uma boa opção.

Fui convidado a ministrar uma disciplina na pós-graduação “Desenvolvimento de Software para Internet e Dispositivos Móveis” que vai acontecer em 2012, na cidade paranaense de Umuarama. A disciplina vai ser “Framework de desenvolvimento PHP”, onde vou apresentar o Zend Framework.
Mais informações no site da Faculdade ALFA

No último sábado aconteceu o PHPSCConf 2011 em Itajaí.
O evento foi um sucesso, com ótimas palestras e boas discussões nos intervalos.
Os slide da minha apresentação “10 dicas de carreira” estão no Speaker Deck

Além do tutorial também vou palestrar no PHP Conference 2011!
A minha palestra será no dia 03/12, as 12:00, com o título “Otimizando aplicações com Zend Framework”
Aproveite e faça sua inscrição para o evento. Imperdível é pouco!

Foi lançada a nova edição da revista PHP Review e conta com um artigo meu, sobre frameworks.
O download do PDF pode ser feito no site oficial da revista

Ano passado tive a honra de ser premiado com o Prêmio Meritus Unochapecó, na categoria Inovação. É um prêmio bem importante para mim pois é a universidade onde estudei e trabalho como professor, por isso fiquei muito feliz em ser indicado novamente ao prêmio este ano, desta vez na categoria “Destaque Inovação – Empresa estruturada por acadêmicos da Unochapecó”, pelo meu trabalho na Coderockr.
Estou concorrendo com mais duas pessoas, dentre elas um grande amigo meu, o Heber Mantovani. O prêmio vai ser entregue no dia 10/11 em Chapecó, mas mesmo se não ganhar, ter sido indicado já é uma vitória

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 1.422 other followers