Don't you speak portuguese? Translate this site with Google Translator

Pensamento do Dia

O mais rico não é o que mais tem, mas o que necessita de menos.(Autor desconhecido)

Convenções do CakePHP

Convenções

A equipe do CakePHP é grande admiradora de convenção sobre configuração. Seguindo convenções você recebe funcionalidades gratuitamente e libera a si mesmo do pesadelo de manter arquivos de configuração.

Aviso Importante: Portanto, antes de começar a trabalhar com CakePHP é muito importante conhecer suas convenções para tirar delas enormes vantagens. Caso não as use o CakePHP não será de muita ajuda.


Controllers

Nomes de classes tipo Controller devem estar no plural, ser CamelCase e terminarem com o sufixo Controller.

Exemplos: ClientesController, PeopleController e LatestArticlesController

Actions - Métodos public nos controllers são chamados de actions e se comunicam com views com mesmo nome que eles e extensão .ctp.

Um exemplo: o action Controller/ClientesController/index() é mapeado automaticamente para a view src/Template/Clientes/index.ctp.

Métodos protected ou private não podem ser acessados via Routing.

Considerações sobre URL para nomes de controllers

O ClientesController que está no arquivo ClientesController.php é chamado pelo navegador com:

http://localhost/aplicacao/clientes

Nomes de controllers com palavras compostas podem ficar assim: • /redApples

• /RedApples • /Red_apples • /red_apples

Todos resolverão com o controller RedApples.

/red-apples/go-pick resolve para o action RedApplesController::goPick()

Criar links:

$this->Html->link('link-title', [

'prefix' => 'MyPrefix' // CamelCased 'plugin' => 'MyPlugin', // CamelCased

'controller' => 'ControllerName', // CamelCased 'action' => 'actionName' // camelCased

]

Namespaces

Todas as classes do core do CakePHP agora (3.x) usam namespaces e seguem as especificações de autoload (auto-carregamento) do PSR-4.

Por exemplo src/Cache/Cache.php

tem o namespace Cake\Cache\Cache

Constantes globais e métodos de helpers como __() e debug() não usam namespaces por questões de conveniência.

Nomes de arquivos e Classes:

Classe KissesAndHugsController está no arquivo KissesAnd-HugsController.php Classe ClientesController está no arquivo ClientesController.php.

Alguns exemplos de classes e seus arquivos:

• O Controller class KissesAndHugsController deve estar no arquivo com nome - KissesAndHugsController.php

• O Component class MyHandyComponent deve estar no arquivo com nome - MyHandyComponent.php

• A Table class OptionValuesTable deve estar no arquivo com nome OptionValuesTable.php

• A Entity class OptionValue deve estar no arquivo com nome OptionValue.php

• O Behavior class EspeciallyFunkableBehavior deve estar no arquivo com nome EspeciallyFunkableBehavior.php

• A View class SuperSimpleView would deve estar no arquivo com nome SuperSimpleView.php

• O Helper class BestEverHelper deve estar no arquivo com nome BestEverHelper.php

Model e Bancos de Dados

Nomes de classes Table - são no plural e CamelCase

Chave Primária

Toda tabela, obrigatoriamente deve ter uma chave primária e o nome da chave deve ser id.

O Cake tem um recurso online importante para mostrar o plural de nomes: http://inflector.cakephp.org/

Nomes válidos: Clientes, Pelople, BigPeople e ReallyBigPeople

Nomes de tabelas são em minúsculas, no plural e palavras compostas separadas por sublinhado. Nomes de tabelas para os acima:

clientes, people, big_people e really_big_people

A convenção é para usar tabelas e campos com nomes na língua inglesa.

Se por alguma razão precisar usar nomes de tabelas em outro idioma, então você deve usar a classe utility:

Cake\Utility\Inflector

Nomes de campos compostos são separados por sublinhado: first_name.

Nomes de campos são em minúsculas e quando compostos por palavras compostas são separados por sublinhado.

Se usarmos os campos username e password (com estes nomes) na tabela users, o Cake deve estar apto para auto-configurar muitas coisas para nós, quando implementando o user login.

Obs.: quando usar autenticação use o tamanho do campo password com varchar(255). Também ajuda adicionar um campo chamado role na tabela users.

Relacionamentos

Chave estrangeira nos relacionamentos hasMany, belongsToou hasOne são reconhecidas por default com o nome (singular) da tabela relacionada seguida de "_id".

Exemplos: groups e users. Em users o campo group_id para relacionar. Relacionamento entre articles e users. Em articles adicionar o campo user_id.

Relacionamentos

Um - Muitos - hasMany

Se relacionamos Articles com User, inserimos um campo user_id em articles. No model UsersTable

Um Users pode conter muitos (hasMany) Articles Muitos Articles belongsTo Users

Ver documentação para detalhes.

Relacionamento Muitos para Muitos

Exemplo: Para relacionamento muitos para muitos de platillos com cocineros, criaremos a tabela

create table cocineros_platillos(

id int unsigned auto_increment primary key, cocinero_id int(11) not null,

platillo_id int(11) not null );

Tipos de Relacionamentos

one to one

hasOne

Auser has one profile.

one to many

hasMany

Auser can have multiple articles.

many to one

belongsTo

Many articles belong to a user.

many to many

belongsToMany

Tags belong to many articles.

Para uma classe Bakers teremos uma chave estrangeira assim: baker_id.

Para uma tabela como category_types a chave estrangeira será category_type_id.

Nomes de campos especiais, que levam o Cake a tomar iniciativas importantes para nós:

title
created
modified

Convenções para as Views

As views tem nomes de arquivos em minúsculas com extensão .ctp.

O método getReady() do conroller PeopleController está associado ao template/view src/Template/People/get_ready.ctp.

Exemplo geral:

• Database table: “people”

• Table class: “PeopleTable”, found at src/Model/Table/PeopleTable.php • Entity class: “Person”, found at src/Model/Entity/Person.php

• Controller class: “PeopleController”, found at src/Controller/PeopleController.php • View template, found at src/Template/People/index.ctp

Usando essas convenções o CakePHP sabe que uma requisição para http://localhost/aplicativo/people mapeia para uma chamada da função index() do PeopleController, onde o model Person está automaticamente disponível (e automaticamente vinculado à tabela people do banco) e renderizada para um arquivo src/Template/People/index.ctp. Nenhum desses relacionamentos precisa ser configurado por qualquer meio mas apenas pela criação de arquivos e classes que precisamos criar sempre seguindo as convenções.

Arquivos da Aplicação

Todos os arquivos da aplicação que criamos ficam na pasta src.

Criptografia

Por padrão o CakePHP 3.x usa a criptografia bcrypt para proteger as senhas.

Documentação oficial http://book.cakephp.org/3.0/pt/intro/conventions.html

Comments fornecido por CComment

Novo Testamento

Ai do mundo, por causa dos escândalos; porque é mister que venham escândalos, mas ai daquele homem por quem o escândalo vem!
(Mt, 18:7)

Rotas no Mapa do Google

© 2015 Ribamar FS. All Rights Reserved. Designed By JoomShaper