Migrando para o CakePHP 1.3

A maioria já deve saber que o CakePHP está com a versão 1.3 do framework em estado beta. Me recordo que a versão 1.2 do framework já era bem agradável quando estava em fase beta, e portanto decidi testar o que o CakePHP 1.3 tinha de novo. Fiz o download e fui direto para a página que contém a descrição das principais mudanças da versão 1.2 para a 1.3. Quando vi que ela tinha um tamanho um pouco grande decidi testar logo alguma aplicação que eu tinha funcionando na versão 1.2.

Para minha surpresa ela não exibiu nem a página inicial, e ao invés disso várias mensagens de erro foram mostradas. Então vi que era realmente necessário ler a extensa página. Durante a leitura percebi que diversas mudanças importantes ocorreram, e logo vi o porque da minha aplicação sequer funcionar. Como a leitura é um pouco extensa, decidi resumir as principais mudanças aqui. As novidades vão ficar para depois, porque também são várias.

Principais mudanças do CakePHP 1.3

  • Adicionadas configurações específicas do config/core.php para quem utiliza o PHP 5.3
  • O arquivo webroot/index.php foi alterado, e deve ser substituído em sua aplicação
  • Recomenda-se que todos os métodos e classes deprecados não sejam mais utilizados
  • Admin routes foram removidas por uma configuração mais geral, chamada routes prefix. O route prefix admin pode ser definido com a linha

    Configure::write('Routing.prefixes', array('admin'));

  • O método de remoção no modelo agora é único,

    Model::delete()

  • O Model teve os métodos métodos findAll(), findCount() e findNeighbours() removidos
  • Os diretórios css, js e img foram removidos dos diretórios app/vendors e plugin/vendors e substituídos com os diretórios plugin e theme no webroot
  • Somente a variável

    $title_for_layout

    poderá ser definida para o título da página, tanto no Controller quanto na View

  • Deve-se selecionar o ponto da aplicação desejado para dump de sql quando o debug está definido para 2, utilizando a linha de código

    echo $this->element('sql_dump');

    em qualquer ponto da aplicação

  • SessionHelper e SessionComponent não são mais carregados por padrão. Agora devem ser declarados como qualquer outro helper ou component. Para manter o comportamento antigo, adicione a declaração de helpers e components em seu AppController
  • A função

    SessionComponent::setFlash()

    teve seu segundo parâmetro alterado para usar um element e não um layout. Para alterar sua aplicação primeiro mova seus layouts para a pasta de elements e renomeie a variável

    $content_for_layout

    para

    $message

  • Não existe mais o nível 3 de debug
  • PaginatorHelper agora produz a saída dos métodos

    prev(); next(); first(); last();

    englobada por

    e não

    para tornar a estilização mais fácil

  • Os métodos

    dateTime(); year(); month(); day(); minute(); meridian(); select();

    do FormHelper não possuem mais o parâmetro

    $showEmpty

    , e agora utilizam

    $attributes['empty']

  • FormHelper::submit()
    agora pode criar outros inputs além de type=submit. Para isso utilize a option type
  • FormHelper::button()

    agora cria elementos button ao invés de inputs reset. Para criar inputs de reset, utilize

    FormHelper::submit()

    com o parâmetro option definindo ‘type’ => ‘reset’

  • O método

    FormHelper::create()

    não cria mais elementos fieldset escondidos, agora substituídos por divs escondidas, o que ajuda na validação de HTML 4

  • No HtmlHelper os métodos

    link(); para(); div(); tag()

    não pussuem mais o parâmetro

    $escape

    , que foi substituído por

    $options['escape']

    . Similarmente os métodos

    meta(); css()

    tiveram o parâmetro

    $inline

    substituído por

    $options['inline']

  • Agora as chamadas a

    $session->flash()

    não são mais auto-exibidas, sendo necessário adicionar

    echo

    antes da chamada a função, como em qualquer método de helper

  • JavascriptHelper e AjaxHelper estão deprecados, e agora deve-se utilizar o JsHelper em conjunto com o HtmlHelper.

    $javascript->link()

    agora é
    $html->script()
    , e
    $javascript->codeBlock()
    é

    $html->scriptBlock()

Já deu para perceber que vai dar trabalho mudar algumas coisas. E essas são apenas as alterações que considerei mais importantes, na página de migração do 1.2 para o 1.3 está a lista completa. Verifique nessa se alguma mudança afeta as suas aplicações.

Pelas alterações deu para perceber que o framework está mais preocupado com a padronização do seu comportamento, de código, utilização de Web Standards e desempenho, questões que são sempre importantes.
Bom, é isso, espero ter ajudado. Na próxima vamos dar uma olhada nas novidades do Cake 1.3.