CakePHP Brasil

28 julho 2010

Nova estrutura de diretório no CakePHP 2.0

Arquivado em: CakePHP — Tags:, — Juan Basso @ 10:05 pm

O CakePHP, além dos novos recursos e alterações que está sofrendo, terá sua estrutura de diretórios alterada. Esta alteração vem da adoção de um padrão criado pelo grupo PHP Standards Working Group.

O padrão é usado em alguns frameworks e CMS. Para quem quiser ver as regras pode consulta o site http://groups.google.com/group/php-standards/web/psr-0-final-proposal.

No CakePHP ainda está em fase de estudos e adequações, as últimas decisões sobre o assunto pode ser conferida na página 2.0 – PHP standards group file naming na LightHouseApp. As alterações no código devem começar em breve nos branches da release 2.0.

Essa alteração certamente vai preocupar muita gente na hora de migrar o código, mas acredito ser inevitável para melhorar a padronização e a performance do framework. Com as alterações existentes hoje a melhora de performance já foi bem significativa, em alguns casos passando de 30%.

Bem, vamos esperar para ver o que vem por aí, mas podem ter certeza que coisa boa é. :)

16 julho 2010

Virando a página – Cake 2.0

Arquivado em: CakePHP — Tags: — Juan Basso @ 7:44 pm

Agora que o CakePHP 2.0 já está um pouco mais maduro, vou comentar um pouco sobre a nova versão, daqui pra frente pretendo publicar alguns posts mais detalhado de cada novo recurso, por enquanto vamos numa visão mais macro.

Pra começo de conversa, pra quem não sabe o CakePHP 2.0 é a versão que está em desenvolvimento pelo time do cake. As versões 1.2 e 1.3 são versões estáveis e que daqui para frente só terão correções de bugs, nada de recurso novo. Não há em vista uma versão 1.4 (que seriam novos recursos com compatibilidade pro PHP4).

A versão 2.0 tem como requisito PHP 5.2 em diante. Por este fato, trará muitos recursos novos e facilidades no desenvolvimento das aplicações. Além disso, a versão poderá otimizar muitos itens, tornando a sua aplicação mais rápida ainda.

Alguns itens previstos pro Cake 2.0:

  • Fim da compatibilidade com PHP 4
  • Lazy load para models, helpers e componentes (Não sabe o que é? Eu explico eu outro post)
  • Remover a “mágica” que mudava os textos, adotando o “What you type is what you get” (ou “O que você escrever é o que você verá”).
  • Ajustes do código para utilizar classes Spl, interfaces, abstracts, etc. e corrigir a visibilidade dos métodos (public/private/protected)
  • As buscas retornarão objetos e não mais arrays, facilitando ações e aumentando a performance
  • Helpers, Behaviors e Components poderão ter aliases, ou seja, você poderá fazer seu próprio HtmlHelper e dizer que o helper Html será o seu customizado

Gostou? Essa era só uma palinha sobre o que vem por aí. Em breve mais comentários e detalhes sobre o funcionamento destes itens.

4 junho 2010

AjusteFloat e outras novidades no CakePtbr

Arquivado em: CakePHP — Tags:, — Juan Basso @ 7:59 pm

Pessoal,

Venho aqui anunciar que o projeto CakePtbr sofreu algumas alterações. A primeira foi a inclusão do behavior AjusteFloat criado pelo Zé Ricardo (Obrigado, Zé!), com alguns complementos meus (docs, formatação e testes). Este behavior está disponível para o CakePHP 1.2 e 1.3.

Em segundo lugar, como a release 1.3 do CakePHP está estável, movi o conteúdo do master (que referia-se ao CakePHP 1.2) para o branch 1.2 e transformei o branch 1.3 em master. Daqui pra frente as melhorias serão feitas aqui e o branch 1.2 conterá apenas correções de bug.

Abraços e bom uso. :)

11 maio 2010

CakeFest 2010

Arquivado em: CakePHP — Juan Basso @ 6:09 pm

Opa!

Como muitos já devem saber, todo ano acontece um encontro entre desenvolvedores, usuários, apreciadores, gente nova e de tudo que é tipo e lugar num evento chamada CakeFest.

Este ano a CakeFest acontecerá nos EUA (já aconteceu na Argentina, Alemanha, Japão, … Cada ano em um país) e neste momento está convidando as pessoas/empresas para participarem como palestrantes ou patrocinadores. As palestras devem ser em inglês e relacionadas ao CakePHP (meio óbvio :P ).

Quem tiver interesse, pode entrar no site oficial da festa e entrar em contato para maiores detalhes: http://cakefest.org/

Os patrocínios podem ser de qualquer quantia. O pessoal lá tem um prospecto explicando tudo, basta pedir as informações. Se você trabalha numa empresa que usa o CakePHP, peça ao seu chefe (ou se você for o chefe) para ajudar a quem ajuda vocês. Com isso estarão promovendo e melhorando ainda mais este maravilhoso framework de desenvolvimento.

A propósito, quem já está se programando para ir para lá? Eu estou pensando seriamente em ir (dinheiro?! sei lá da onde vou tirar).

27 abril 2010

Behavior Super Find veio ao mundo

Arquivado em: CakePHP — Tags:, , — Juan Basso @ 6:49 pm

Depois de ter criado o post sobre o Behavior para melhorar o find, cá está ele! Ontem a noite criei o projeto e enviei o código que tenho para o GitHub, no projeto entitulado de super_find.

Tinha dito que o nome seria power find, mas depois de ver alguns projetos na internet como o SuperAuth, SuperValidatable, etc., resolvi manter o nome de SuperFind.

Bem, vamos ao que interessa, o que faz e como funciona… Basicamente, ele serve para fazer um find podendo colocar condições de relacionamentos hasMany e HABTM. No CakePHP puro isto não é possível, pois ele joga estas condições na query direto e acaba causando um erro de SQL. Aí você dizer, mas e o Containable?! Bem, ele até faz alguns filtros, mas o filtro que ele faz é em cima do valor retornado da consulta principal. Vamos a um exemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$this->Usuario->find('all', array('contain' => array('Tarefa.nome = "Tarefa 1")));
/* Retorno:
    array(
        array(
            'Usuario' => array('id' => 1, 'nome' => 'Usuario 1'),
            'Tarefa' => array(
                array('id' => 1, 'nome' => 'Task 1', 'usuario_id' => 1)
            )
        ),
        array(
            'Usuario' => array('id' => 2, 'nome' => 'Usuario 2'),
            'Tarefa' => array(
            )
        ),
        array(
            'Usuario' => array('id' => 3, 'nome' => 'Usuario 3'),
            'Tarefa' => array(
            )
        ),
    )
*/
 
$this->Usuario->superFind('all', array('conditions' => array('Tarefa.nome' => 'Tarefa 1')));
/* Retorna:
    array(
        array(
            'Usuario' => array('id' => 1, 'nome' => 'Usuario 1'),
            'Tarefa' => array(
                array('id' => 1, 'nome' => 'Tarefa 1', 'usuario_id' => 1)
            )
        )
    )
*/

Em resumo, no Containable ele listou todos os usuários e no relacionamento Tarefa veio apenas os que tinham a ‘Tarefa 1′. Já no SuperFind ele mostrou apenas os usuários que tinham a ‘Tarefa 1′.

O mesmo funciona com relacionamentos HABTM. Para os relacionamentos hasOne e belongsTo não são necessários, pois isto já funciona nativamente.

Por enquanto é possível fazer isto apenas com um nível de filtro, ou seja, você não poderá colocar nas condições algo como Tarefa.Projeto.nome.

Bem, por enquanto é isso. Alguém tem mais sugestões do que poderia entrar? O que sente falta no find?

Abraços e bom uso.

23 abril 2010

Nova release do CakePHP

Arquivado em: CakePHP — Tags:, — Juan Basso @ 8:22 am

Hoje foi liberada a release 1.2.7 do CakePHP, corrigindo 36 bugs, sendo um uma questão de segurança.

Uma pequena correção de segurança também foi feita nesta versão. Este problema de segurança afeta apenas os sistemas que utilizam o modo debug em produção. Caso deseja apenas corrigir o problema de segurança, sem atualizar o core inteiro, você pode aplicar o patch disponibilzado por eles em http://bin.cakephp.org/view/1459556460.

A nova versão (1.2.7) está disponível no GitHub. A lista completa das alterações pode ser vista no Changelog.

Lembro também que está previsto para domingo o lançamento da versão 1.3.0-RC5! Vamos aguardar pra ver.

22 abril 2010

Behavior para melhorar o find

Arquivado em: CakePHP — Tags:, — Juan Basso @ 7:14 pm

Hola!

Estava aqui implementando alguns projetos e vi o quão chato é ter que implementar os models no cake sempre pensando nas queries que ele irá gerar.

As vezes vou fazer um find em models que tenham hasMany e quero fazer um filtro pelo model do hasMany e não consigo. Se eu coloco no conditions ele diz que a tabela do hasMany não existe. Se eu uso Containable ele mostra todos os registros do model que fiz o find com alguns tendo associações vazias. Ou seja, ele não faz JOIN com as tabelas hasMany nesses casos, sempre gerar queries diferentes e não sabe tratar direito.

Pensei em implementar isto no core do cake e propor para eles, mas a release 1.3 está fechada para enhancements, então ficaria para a versão 1.4/2.0 que sabe-se lá quando vem… Pensei então em um plugin para implementar isto, mas aí entra meu maior problema em computação: qual o nome?! :P

Alguém tem alguma sugestão? Como será um projeto a nível internacional, pensei em “SuperFind”, “FindPlusPlus”, “xFind”… Alguém tem alguma melhor?

No começo será mais para melhorar os relacionamentos de joins e afins, mas futuramente trabalhar melhor um pouco os casos de limit nos relacionamentos e outras coisitas a mais do find.

4 abril 2010

Plugin CakePtbr

Arquivado em: CakePHP — Tags:, , — Juan Basso @ 5:15 pm

Como alguns já devem conhecer, dou continuidade ao trabalho iniciado pelo Gabriel Gilini no GitHub. Ele iniciou colocando as inflections geradas pelo Sadjow, depois algumas atualizações que fiz, e assim foi… Depois de um tempo fiz um fork do projeto dele no GitHub e fui incluindo novas features, como validações (cpf, cnpj, etc.), behaviors, helpers, etc. Além disso, inclui testes automatizados para todos os itens existentes no plugin. No link do projeto você pode ver todos recursos que foram feitos: http://github.com/jrbasso/cake_ptbr

Agora, com as releases candidates do CakePHP 1.3, criei um branch (chamado 1.3) para fazer os devidos ajustes. Ou seja, se você já está usando o CakePHP 1.3, use a versão do branch 1.3 do cake_ptbr.

Neste branch da versão 1.3 entraram e sairam algumas coisas, dentre elas:

  • Validação de CPF/CNPJ: Foram removidas. O código delas foi transferido para o plugin oficial do Cake (localized) que trata só de internacionalização;
  • Geração de bolos em português: Quando você gerar models, views ou controllers via bake, eles já sairam do forno falando português!

Os demais recursos existentes na versão 1.2 continuarão valendo para a versão 1.3. Novos recursos estão na lista para serem implementados (falta um pouco de tempo): integração com PagSeguro, geração de boletos bancários e ajuste de número.

Quem tiver novas idéias de itens para implementar neste plugin, responda este post ou então crie uma issue no GitHub.

Abraços e bom uso para todos.

31 março 2010

MeioUpload – refactory

Arquivado em: CakePHP — Tags:, — Juan Basso @ 7:47 pm

Depois de quase um ano, já vieram moscas, mas elas morreram, vieram aranhas, mas morreram também, só ficaram as teias aqui no blog. Depois da limpeza, volto com algumas novidades.

Pra voltar, gostaria de falar do último projeto que estou trabalhando, o MeioUpload. O MeioUpload foi um behavior iniciado pelo Vinícius Mendes no site Meio Código. O site do projeto era http://www.meiocodigo.com/projects/meioupload/

Como ele saiu do desenvolvimento do CakePHP e eu precisei incluir algumas validações, pedi a autorização e criei um projeto para ele no GitHub: http://github.com/jrbasso/MeioUpload

Com isso, alguns bugs foram surgindo, pedidos de novas features aqui e ali e sempre fui empurrando com a barriga. O grande Joze Gonzalez ajudou na documentação e algumas implementações também.

Como veio muita coisa nova e o código estava parecendo pinheirinho de natal, cheio de coisa pendurada, resolvi fazer um refactory geral nele. A versão com estas modificações é a 3.0, ainda em branch, liberei hoje a versão RC1 para download. Quem encontrar problemas ou ainda tiver alguma sugestão do que implementar, cria um ticket no github que irei dar uma analisada.

Ela não está 100% compatível com a versão anterior. Removi algumas configurações que eram possíveis e outras deixei automáticas (preenchidas através de algumas regras). Fiz isso para simplificar o código e evitar que tivessem várias configurações. Também atualizei a documentação e incluí (finalmente) testes automatizados no projeto. Os testes não cobrem 100% dos recursos, mas estamos caminhando para isso.

Quem tiver testado, por favor dê um feedback para saber para que lado andar com o projeto.

Abraços e obrigado a todos.

20 junho 2009

Estados brasileiros com CakePHP

Arquivado em: CakePHP — Juan Basso @ 7:36 pm

Pessoal,

Incluí no projeto CakePtbr o model EstadoBrasileiro e o helper Estados. Ambos são relacionados aos estados brasileiros, facilitando o uso nos formulários e models.

Documentação e códigos encontram-se no projeto.

Posts mais antigos »

Powered by WordPress