Snippet do Sublime Text 2 para gerar getters e setters em PHP

Aqui entre nós… Escrever as funções de get() e set() para cada atributo de uma classe é uma daquelas tarefas repetitivas e chatas. Seguindo o conceito de DRY eu fiz uma pesquisa para encontrar alguma forma de gerar isso de maneira mais fácil, usando o meu editor de programação favorito, o Sublime Text 2.
Para resolver isso basta escolher a função Tools->New Snippet e substituir o texto pelo novo snippet

Depois de salvar o arquivo com o nome getset.sublime-snippet está pronto para uso.
Para demonstrar eu criei um pequeno video

Fonte

SOA e Silex

Nos últimos anos a arquitetura SOA (Service-oriented architecture) deixou de ser uma tendência e virou realidade em diversos projetos e empresas. A maioria dos projetos que a Coderockr desenvolveu em 2011, e tem planejada para 2012, foi desenvolvida dessa forma.

Um dos exemplos é o uFun. Basicamente, a arquitetura da aplicação é:

Imagem

 

Essa é a típica aplicação que se beneficia desse tipo de arquitetura, pois temos várias interfaces acessando os mesmos dados e lógica. Os dados trafegam na forma de JSON via protocolo HTTP. Muito fácil de trabalhar em todas as plataformas e linguagens usadas no projeto (Objective C, Java, PHP e JavaScript).

Outro assunto que me interessa muito é o de frameworks. Ultimamente tenho estudado bastante os novos micro-frameworks de PHP. A parte server do uFun foi desenvolvida pelo @xorna em Slim Framework, que comentei em outro post.  Além do Slim Framework outro framework que me pareceu interessante foi o Silex, principalmente por ser baseado em componentes do Symfony. 

Como eu tenho uma teoria de que só aprendemos alguma tecnologia quando precisamos desenvolver algo com ela eu me fiz um desafio: criar um aplicativo em Silex para facilitar a criação de serviços Rest e RPC. O resultado está no Github da Coderockr: https://github.com/Coderockr/SOA-Server

Além do Silex eu usei alguns componentes que eu achei importantes:

No README do projeto tem mais informações sobre como fazer o download e instalação. Quanto ao funcionamento:

Toda a lógica do projeto está no arquivo index.php. Essa é uma das vantagens do Silex, por ser um micro-framework. Tudo é muito simples, principalmente a criação de rotas, validações. O index.php faz o papel de bootstrap da aplicação e possui as rotas para os métodos Rest (GET, PUT, POST e DELETE) e RPC.

Para que uma entidade esteja disponível via Rest basta que seja criada uma classe no namespace model que extends model\Entity, como no exemplo. Ela é uma entidade Doctrine, então temos todas as facilidades desse excelente framework. Além disso podemos adicionar as anotações para o DMS/Filter (por exemplo o @Filter\StripTags) e as configurações para o Symfony Validator (método loadValidatorMetadata)

Para que uma classe seja acessível via RPC ela precisa ser criada no namespace procedure e estender procedure\Procedure. Como Procedure é uma classe abstrata a nova classe precisa definir o método execute e retornar sempre um array com o resultado, conforme o exemplo.

Para termos um pouco de segurança foi implementado um controle de acesso, usando-se um header HTTP, o Authorization, que é validado baseado no arquivo configs/clients.php.

Também escrevi um exemplo de como seria fácil acessar via jQuery os serviços. O mesmo pode ser facilmente feito via PHP e outras linguagens usando Curl e outras bibliotecas.

Conclusões

Me diverti bastante escrevendo e testando esses componentes. Além da diversão, acabei criando algo que pretendo usar nos próximos projetos da Coderockr. Então esse desafio cumpriu seus objetivos: aprendi algo novo (Silex nesse caso) e consegui criar algo útil. Se for útil para alguém mais só aumenta a minha recompensa :)

Se alguém quiser contribuir com códigos é só usar a metodologia pull-request do Github e sugerir melhorias e correções.

Etiquetado , , , , , , ,

Novos webcasts da Coderockr

A Coderockr repete a parceria com a ConexTI Live e lança novos webcasts. Confira no blog da Coderockr e na página oficial dos webcasts

Usando componentes do Zend Framework

Uma das coisas mais legais do Zend Framework é a forma como ele foi construído, na forma de componentes que podem ser usados separadamente ou até substituídos. Dessa forma é possível usar somente alguns componentes em qualquer projeto, desenvolvido com outros frameworks ou mesmo sem nenhum. Exemplos de componentes que podem ser bem úteis:

- Zend_Mail
- Zend_Cache
- Zend_Db
- Zend_Config
- Zend_Date
- Zend_Log

Entre outros.
Um exemplo bem simples, usando o Zend_Cache:

<?php
//include do zend framework
$includePath  = get_include_path();
//o : é o separador de diretórios no Unix. No Windows seria ;
$includePath .= ':/var/www/html/library/';
set_include_path($includePath);

//inicia o autoloader, responsável por incluir os arquivos dos componentes
require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->setFallbackAutoloader(true);

$frontendOptions = array(
    'lifetime' => 7200, // tempo de vida
    'automatic_serialization' => true
);
$backendOptions = array('cache_dir' => '/tmp');
// criando uma instancia do cache
$cache = Zend_Cache::factory('Core',//frontend
    'File',  //backend
    $frontendOptions,
    $backendOptions
);

if(!$result = $cache->load('cachePosts')) {
      //aqui podemos usar o Zend_Db, por exemplo
      $result = 'aqui vai o processamento, como buscar os dados do banco';
      $cache->save($result, 'cachePosts');
}
echo $result;


Dessa forma é fácil de extender seu projeto usando componentes bem estruturados e testados.

Novo aplicativo da Coderockr

Lançamos ontem um novo aplicativo feito pela Coderockr. É o Ultimate Fun (uFun para os íntimos hehe) que está disponível gratuitamente para Android. A versão para iOS já foi enviada para a Apple e deve ser liberada nos próximos dias.
Mais informações e links para download neste post no nosso blog

Curso de desenvolvimento iOS

A Coderockr está lançando um novo curso em Joinville.
O @xorna vai ministrar a edição revisada do curso de desenvolvimento iOS, com material atualizado para as novidades do iOS 5
Maiores informações no nosso blog.

Curso de Zend Framework em Joinville

A Coderockr está iniciando seus cursos em 2012
O primeiro é o curso de Zend Framework que vou ministrar em Joinville
Os detalhes estão no nosso blog http://www.coderockr.com/blog/2012/01/curso-php-avancado-zend-framework/blog/
O próximo curso é sobre iOS. Novidades em breve

Nova versão do meu e-book sobre Zend Framework

Lancei hoje uma versão revisada do Zend Framework na prática. Confiram no site oficial

Meus dois centavos sobre o MicroPHP Manifesto

Nos últimos dias um post tem gerado alguma discussão entre os programadores PHP: o MicroPHP Manifesto (post original e o site que foi gerado depois)
Confesso que concordo com vários pontos levantados pelo Ed Finkler no seu artigo, principalmente no ponto de que alguns frameworks estão ficando muito mais complexos do que o necessário.
Logo depois da publicação do post surgiram algumas respostas (essa e essa, por exemplo), umas concordando e outras crucificando o autor.
A minha opinião é: depende :) Depende do projeto. Estou trabalhando atualmente em um projeto enorme, com vários requisitos técnicos bem avançados, com equipes trabalhando remotamente e paralelamente. Neste projeto estamos usando Zend Framework e Doctrine e foi a melhor decisão.
Ao mesmo tempo precisei ministrar um curso onde o foco eram tecnologias bem específicas e não precisava adicionar complexidade, então a melhor opção foi o Slim, conforme comentei em outro post. Aliás, gostamos tanto do Slim que estamos usando em outros pequenos projetos da Coderockr. Gosto também da abordagem do Symfony, seus componentes e o Silex, micro-framework baseado nestes componentes.
Eu acho que o post teve um bom efeito, que foi gerar a discussão sobre o assunto, mas ele não deve ser levado tão ao pé da letra e nem gerar flamewars intermináveis. A idéia é sempre analisar qual é a melhor situação para seu projeto, e mesmo usando algo completo, como o Zend Framework, tentar sempre manter o desenvolvimento o mais simples e bem implementado.

Etiquetado

Curso sobre PHP, Memcache, Sphinx e Gearman

Em Fevereiro vou repetir o curso “mão na massa” que ministrei no PHPConference de 2011, pela Tempo Real Eventos, em SP.
Os detalhes do curso encontram-se na página do evento

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 1.472 other followers