Doctrine ORM

Agosto 7, 2009 on 11:56 am | In Informatica, php | 3 Comments

Agora vou falar da ultima novidade nos meus projetos, o uso do Doctrine como camada de abstração de dados. Ele foi criado com base do Hybernation do Java, assim absorvendo bastante idéias e design patterns, eu não conheço profundamente todos os recursos, mas o pouco que tenho usado ja tem me ajudado muito, vou descrever o que ele pode fazer, como tem me ajudado e mais para frente uns tutoriais mais específicos com códigos do Doctrine.

O Doctrine é um object-relational mapper ou ORM (mapeador de objeto-relacional), a idéia fica por conta de acessar todos os seus dados mySQL ou de banco através de objetos PHP, chega de querys complexas e gambiarras com php-mySQL. Ele segue o design pattern criado pelo Martin Fowler de Active Record (isso mesmo o mesmo criador do MVC), que é a idéia de objeto ser a referência da tabela.

Exemplo:

PHP:
  1. // Para salvar algo na tabela usuario
  2. $User = new Usuario();
  3. $User->nome = 'nome do usuario';
  4. $User->usuario = 'usuario';
  5. $User->senha = 'senha123dificil';
  6. $User->save();

Agora com essa idéia você pode escrever Query SQL com OO, o dialeto do doctrine é o DQL (Doctrine Query Language), que é possível trazer todos objetos relacionais (tabelas relacionais) de forma bem simples, vejamos um exemplo de DQL e SQL:

DQL:

PHP:
  1. $q = Doctrine_Query::create()
  2.     ->from('User u')
  3.     ->leftJoin('u.Phonenumbers p');

SQL:

PHP:
  1. SELECT
  2. u.id AS u__id,
  3. u.is_active AS u__is_active,
  4. u.is_super_admin AS u__is_super_admin,
  5. u.first_name AS u__first_name,
  6. u.last_name AS u__last_name,
  7. u.username AS u__username,
  8. u.password AS u__password,
  9. u.type AS u__type,
  10. u.created_at AS u__created_at,
  11. u.updated_at AS u__updated_at,
  12. p.id AS p__id,
  13. p.user_id AS p__user_id,
  14. p.phonenumber AS p__phonenumber
  15. FROM user u
  16. LEFT JOIN phonenumber p ON u.id = p.user_id

Ainda tem muito mais características, vale a pena dar uma olhada no próprio site do Doctrine ou usar o google, mas so com essas definições nos podemos dizer que:

  • Vamos programar mais rápido
  • Queries ficarão mais simples que o SQL
  • Não nos preucuparemos mais com nosso Model
  • Trabalharemos com Objetos e listas de queries

Entao apartir da definição do Schema da base de dados o próprio Doctrine cria todos os códigos de Model ai podemos livremente instanciar Objetos relacionais e salvar, deletar e afins.


IDE php

Agosto 3, 2009 on 11:21 am | In Informatica, php | 2 Comments

IDE para programadores PHP, que também muitas vezes escrevem códigos Javascript, CSS e xHTML. Essa parece ser uma busca sem fim, quando você começa procurar uma IDE aberta, free e que atenda a necessidade de otimização de tempo na hora de programar, sem falar se pensarmos que muitas vezes é necessário ela ser multi-plataforma para que possamos programar em ambientes diferentes com o mesmo rendimento... bom, não vou entrar no mérito para discutir ferramentas totalmente windows como o dreamweaver, onde é tem essas características de view, você é programador, seu objetivo é visualizar somente código, com essa prática acertar sempre no resultado do conteúdo, otimizando cada vez mais o tempo de codificação, para isso esqueça ficar visualizando o resultado na sua ide frequentemente.

Para todos e alguns problemas mais descrito acima nós temos a IDE Aptana Studio para PHP, o qual tenho usado para programar seja, em windows, linux (uso ubuntu a 3 anos) ou mac (ainda vou ser um futuru usuário), que traz diversas otimizações para programar. Segue a lista de algumas características:

  • Assistente de Código, famoso por autocompletar o código para você, trazer o docs dos parametros dos métodos e funções (isso ocorre com seus próprios objetos, aqueles escritos por você.
  • Colorização de código, o que ajuda horrores para identificar suas concatenações, funções e toda organização do código, totalmente customizavel.
  • Refactoring: automatize códigos, você pode customizar tags e códigos para que o Aptana apatir de uma tag escreva um código inteiro para você, exemplo ecre switch/ e ele retorna uma estrutura completa para você.
  • Geração de código, retornando para você códigos comuns, getters and setters e dentre outros...
  • Outline do seus objetos, assim você consegue pular para um método ou propriedades sem perder tempo.
  • PhpDoc generator, gerando toda documentação do seu código.

Green Chad showcase

Essas são algumas caracteristicas, ainda existe o aptana.tv onde você pode conferir dicas em video como aumentar seu rendimento, fica a dica de um theme chamado Green Chaud que eu uso e é bastante agradável.



 

 Assine o feed