Table of Contents : Manual

Convenções no CakePHP

Nós somos grandes fãs de convenções nas configurações. Enquanto isso toma um pouco de tempo para aprender as convenções do CakePHP, você ganha tempo em um longo processo: seguindo as convenções, você ganha funcionalidades gratuitamente e livra-sede madrugas de manutenção de arquivos de configuração. Convenções também fazem com que o sistema fique uniformemente desenvolvido, permitindo outros desenvolvedores o ajudem mais facilmente.

Convenções no CakePHP tem sido produzida por anos de experiência em desenvolvimento web e boas práticas. Enquanto nós sugerimos você a usar essas convenções enquanto desenvolve em CakePHP, nós devemos mencionar que muitos desses princípios são facilmente sobrescritos por alguma coisa que é especialmente passado quando trabalha-se com sistemas legados.

Convenções de arquivos e nome de classes

Em geral, nome dos arquivos são sublinhados, enquanto nome de classes são CamelCased, ou seja, primeiras letras das palavras em maiúsculo. A classe KissesAndHugsController pode ser encontrada no arquivo kisses_and_hugs_controller.php, por exemplo.

Porém, o nome da class e seu tipo não são necessariamente encontrados no nome do arquivo. A classe EmailComponent é encontrada no arquivo chamado email.php e a classe HtmlHelper é encontrada no arquivo html.php.

Convenções de modelo

Nome das classes de modelo devem ser no singular e CamelCased. Person, BigPerson e ReallyBigPerson são todos os exemplos de nomes convencionados para modelos.

Os nomes das tabelas correspondem ao nome do modelo do CakePHP, mas no plural e sublinhados. As tabelas para os modelos mencioados anteriormente devem ser people, big_people e really_big_people, respectivamente.

Tabelas associadas, usadas em relações hasAndBelongsToMany entre modelos, devem ser nomeadas depois dos modelos das tabelas que a compõem, em ordem alfabética (apples_zebras em vez de zebras_apples). Se sua aplicação possui esse tipo de relação entre os modelos Tag e Post, o nome deve ser posts_tags.

Convenções de controlador

O nome das classes de controladores são no plural, CamelCased e no final 'Controller'. PeopleController, BigPeopleController e ReallyBigPeopleController são todos os exemplos convencionais para nome de controladores.

A primeira função que você deve escrever em um controlador deve ser o método index(). Quando alguém requisita um controlador sem ação, o behavior padrão é renderizar o método index() do controlador. Por exemplo, a requisição para http://www.exemplo.com.br/apples/ mapeia para a chamada da função index() do ApplesController, assim como http://www.exemplo.com.br/apples/view mapeia para a chamada da função view() no ApplesController.

Você também pode alterar a visibilidade das funções do controlador em CakePHP colocando sublinhados na frente do nome das funções. Se a função do controlador estiver com sublinhado na frente, a função não será disponibilizada para acesso da web através do dispatcher, mas estará disponível para uso interno.

Convenções de visão

Os arquivos de template das visões são chamados depois das funções que os controladores mostram, na forma com sublinhados. A função getReady() da classe PeopleController irá procurar pelo template da visão em /app/views/people/get_ready.ctp.

O modelo básico é /app/views/controller/underscored_function_name.ctp.

Nomeando os pedaços da aplicação usando as convenções do CakePHP, você ganha funcionalidades sem luta e proteção configuração. Aqui o exemplo final que vincula as associações:

  • Tabela no banco de dados: 'people'
  • Classe do Modelo: 'Person', encontrada em /app/models/person.php
  • Classe do Controlador: 'PeopleController', encontrado em /app/controllers/people_controller.php
  • Template da Visão: encontrado em /app/views/people/index.ctp

Usando estas convenções, CakePHP sabe que a requisição para http://www.exemplo.com.br/people/ mapeia para a chamada da função index() do PeopleController, onde o modelo Person é automaticamente disponibilizado (e automaticamente associado a tabela 'people' no banco de dados), e renderiza isso para o arquivo. Nenhuma destas relações foram configuradas por qualquer meio que não seja através da criação de classes e arquivos que você precise criar em algum lugar.

Agora que você leu os fundamentos do CakePHP, você pode tentar seguir o tutorial de como fazer um Blog em CakePHP, disponível no apêndice deste manual.