O BOLO AINDA SERVE MUITA GENTE
1
OPA!
Sou o Waldemar Neto
Me siga na deepweb @waldemarnt
blog: http://walde.co/
2
UM POUCO SOBRE MIM
▸ Gaucho de Pelotas
▸ Desenvolvedor a mais de 6 anos
▸ Focado em web/api’s
▸ Palestrante sempre que possível
▸ Colaborador do iMasters e mantenho meu próprio
blog
▸ Colaborador open-source
3
ONDE EU TRABALHO
Pelotas
Earlang
Argentina
CONRAD CAINE
4
Munich
O CAKEPHP E EU
Desde a versão 1.x e enquanto for feliz
Um pouco da história
NA VIDA CAKEDC
▸ Projetos próprios
▸ Apis
▸ Sites institucionais
▸ Sistemas
▸ Estruturação
▸ Suporte ao open-source
▸ Consultoria
▸ Entendimento melhor do
foco e do domínio
5
O BOLO DE PHP
6
“Rapid development php framework.
7
PRINCIPAIS DIFERENÇAS DESSE BOLO
▸ Criação rápida
▸ Configuração simples
▸ Uma grande lista de ingredientes já inclusos
▸ MVC amigável e uma boa abstração
▸ Proteções atuais necessárias
▸ Geração de código inteligente
8
NOVA VERSÃO
ESTÁVEL
1.x
2.x
3.x
9
MÃO NA MASSA
A RECEITA PARA A VERSÃO 3.X
10
PREPARANDO A MASSA
11
ESTRUTURA PSR-4
12
ANALISANDO O RECHEIO
É hora de pôr o dedo no bolo
13
POR DENTRO DO CONSOLE
▸ Framework próprio para criação de shell script integrado com o cli do
PHP
▸ Integração com a aplicação
▸ Criação de tasks reutilizáveis entre os shell scripts
14
Estrutura
CONTROLLERS E COMPONENTS
15
Como o controller funciona
HMM.. OS CONTROLLERS TEM
GOSTO DE QU´E?
REQUEST
ACTION/REQUEST PROCCESS
RESPONSE
Controller
AppController
ExamplesController
Exemplo de hierarquia Exemplo de requisição
16
Reutilizando logica de controller com components
CONTROLLER COM UMA PITADA DE
COMPONENTS
17
▸ Divisão de lógica entre controllers
▸ Sobreescrita de components ja existentes
Os ingredientes que formam o Model.
ISSO TEM CHEIRO DE MODEL?
18
Características da Table.
UMA PITADA DE TABLE
▸ Classe relacionada à tabela do banco de dados
▸ Validação de dados
▸ Callbacks
▸ Behaviors
19
Caracteristicas da Entity.
UMA PITADA DE ENTITY
▸ Representação do domínio na aplicação
▸ Criados a cada vez que a table busca dados
▸ Acessos e modificadores
▸ Propriedades virtuais
▸ Acesso a erros dos validators da table
▸ Facilidade em transformar os dados para json
20
Caracteristicas do Behavior.
E AGORA UM POUCO DE BEHAVIOR
▸ Reuso de lógica entre entidades similar a Traits
▸ Facilidade em aplicar regras a multiplas entidades
▸ Facilidade de escutar callbacks de varias entidades
▸ Aplicação de lógicas on the fly
▸ Adição de relacionamentos
▸ Possibilidade de metodos que podem ser sobre escritos
21
O PRÓPRIO ORM
▸ Inconsistências
▸ Falta de query objects
▸ Arrays como retorno
▸ Containable
▸ Recursividade
▸ Validações
PROBLEMAS QUE FORAM SOLUCIONADOS
22
O PRÓPRIO ORM
▸ Novo Design
▸ Novos callbacks
▸ Cache mais inteligente
▸ Events
▸ Query objects
▸ Entidades como objetos
AS VANTAGENS
23
O PRÓPRIO ORM
▸ Relacionamentos como métodos
▸ Metodo de initialize
▸ Remoção de virtualFields
▸ Remoção do callback de afterFind
PONTOS IMPORTANTES
24
RELACIONAMENTOS
Entre
Modelos
25
OS DIVERSOS TIPOS DE RELACIONAMENTOS
VARIOS ARTIGOS belongsTo (pertencem) A UM AUTORUM ARTIGO hasMany (tem varios) COMENTARIOS E COMENTARIOS NÃO APROVADOSUM USUÁRIO hasOne (tem um) ENDEREÇOVÁRIOS ARTIGOS belongsToMany(pertencem a vários) ENDEREÇOS
26
COBERTURA COM TEMPLATES E VIEWS
▸ Abstração de HTML com PHP
▸ Helpers para as mais diversas necessidades de view
▸ Blocos e elementos
▸ Layouts
▸ Views para XML e Json
▸ ViewBuilder para administrar as propriedades relacionadas a
view
27
COMO AS VIEWS FUNCIONAM
28
ASSANDO COM O CONSOLE
29
O CONSOLE
30
BOLOS RÁPIDOS COM O BAKE
GERAÇÃO DE CÓDIGOS
31
BOLOS RÁPIDOS COM O BAKE
O COMANDO BAKE ALL
32
PLUGIN DE SCAFFOLDING
33
PLUGIN DE ACL
34
SÓ MISTURAR COM LEITE E USAR
PLUGINS E COMPONENTS PRONTOS QUE AGILIZAM NOSSO TRABALHO
35
ROUTER MAPEANDO URLs DE BARBADA
▸ Mapeamento por array
▸ Aplicação de regras e possibilidade de ter classe propria
▸ Suporte a regex
▸ Rotas nomeadas
▸ Suporte a prefixos
36
INTERNACIONALIZAÇÃO E LOCALIZAÇÃO
▸ Configuração via .po
▸ i18n com prefixos para linguagens
▸ Tranformação de datas e moedas baseadas na localização
▸ Suporte a plural e singular em multi-linguagem
37
EVENT DISPATCHER/LISTENER
38
MIGRATIONS DE BANCO DE DADOS
▸ Wrapper to PHINX
▸ Criação de migrações especificas
▸ Possibilidade de rollback
▸ Callbacks antes e depois de rodar
39
BUGIGANGAS QUE AJUDAM NO NOSSO DIA A DIA
▸ Caching
▸ CakeEmail
▸ Folder e File
▸ Hash
▸ Inflector
▸ Logging
▸ CakeNumber
▸ Security
▸ Set
▸ XML
▸ CakeTime
40
A COMPARAÇÃO QUE O CARA DE BARBA DA
TERCEIRA FILA VAI PERGUNTAR
41
FINALIZANDO...
▸ Entenda sua necessidade
▸ Use o framework seguindo a documentação
▸ Não faça comparações incomparáveis
▸ Use filtro solar
42
OBRIGADO A TODOS E CAMIGOAL!
Perguntas?
Meu nick na deepweb é @waldemarnt , me
segue lá.
Meu blog é: http://walde.co/
43

Cakephp 3.0 o bolo ainda serve muita gente

  • 1.
    O BOLO AINDASERVE MUITA GENTE 1
  • 2.
    OPA! Sou o WaldemarNeto Me siga na deepweb @waldemarnt blog: http://walde.co/ 2
  • 3.
    UM POUCO SOBREMIM ▸ Gaucho de Pelotas ▸ Desenvolvedor a mais de 6 anos ▸ Focado em web/api’s ▸ Palestrante sempre que possível ▸ Colaborador do iMasters e mantenho meu próprio blog ▸ Colaborador open-source 3
  • 4.
  • 5.
    O CAKEPHP EEU Desde a versão 1.x e enquanto for feliz Um pouco da história NA VIDA CAKEDC ▸ Projetos próprios ▸ Apis ▸ Sites institucionais ▸ Sistemas ▸ Estruturação ▸ Suporte ao open-source ▸ Consultoria ▸ Entendimento melhor do foco e do domínio 5
  • 6.
    O BOLO DEPHP 6
  • 7.
  • 8.
    PRINCIPAIS DIFERENÇAS DESSEBOLO ▸ Criação rápida ▸ Configuração simples ▸ Uma grande lista de ingredientes já inclusos ▸ MVC amigável e uma boa abstração ▸ Proteções atuais necessárias ▸ Geração de código inteligente 8
  • 9.
  • 10.
    MÃO NA MASSA ARECEITA PARA A VERSÃO 3.X 10
  • 11.
  • 12.
  • 13.
    ANALISANDO O RECHEIO Éhora de pôr o dedo no bolo 13
  • 14.
    POR DENTRO DOCONSOLE ▸ Framework próprio para criação de shell script integrado com o cli do PHP ▸ Integração com a aplicação ▸ Criação de tasks reutilizáveis entre os shell scripts 14
  • 15.
  • 16.
    Como o controllerfunciona HMM.. OS CONTROLLERS TEM GOSTO DE QU´E? REQUEST ACTION/REQUEST PROCCESS RESPONSE Controller AppController ExamplesController Exemplo de hierarquia Exemplo de requisição 16
  • 17.
    Reutilizando logica decontroller com components CONTROLLER COM UMA PITADA DE COMPONENTS 17 ▸ Divisão de lógica entre controllers ▸ Sobreescrita de components ja existentes
  • 18.
    Os ingredientes queformam o Model. ISSO TEM CHEIRO DE MODEL? 18
  • 19.
    Características da Table. UMAPITADA DE TABLE ▸ Classe relacionada à tabela do banco de dados ▸ Validação de dados ▸ Callbacks ▸ Behaviors 19
  • 20.
    Caracteristicas da Entity. UMAPITADA DE ENTITY ▸ Representação do domínio na aplicação ▸ Criados a cada vez que a table busca dados ▸ Acessos e modificadores ▸ Propriedades virtuais ▸ Acesso a erros dos validators da table ▸ Facilidade em transformar os dados para json 20
  • 21.
    Caracteristicas do Behavior. EAGORA UM POUCO DE BEHAVIOR ▸ Reuso de lógica entre entidades similar a Traits ▸ Facilidade em aplicar regras a multiplas entidades ▸ Facilidade de escutar callbacks de varias entidades ▸ Aplicação de lógicas on the fly ▸ Adição de relacionamentos ▸ Possibilidade de metodos que podem ser sobre escritos 21
  • 22.
    O PRÓPRIO ORM ▸Inconsistências ▸ Falta de query objects ▸ Arrays como retorno ▸ Containable ▸ Recursividade ▸ Validações PROBLEMAS QUE FORAM SOLUCIONADOS 22
  • 23.
    O PRÓPRIO ORM ▸Novo Design ▸ Novos callbacks ▸ Cache mais inteligente ▸ Events ▸ Query objects ▸ Entidades como objetos AS VANTAGENS 23
  • 24.
    O PRÓPRIO ORM ▸Relacionamentos como métodos ▸ Metodo de initialize ▸ Remoção de virtualFields ▸ Remoção do callback de afterFind PONTOS IMPORTANTES 24
  • 25.
  • 26.
    OS DIVERSOS TIPOSDE RELACIONAMENTOS VARIOS ARTIGOS belongsTo (pertencem) A UM AUTORUM ARTIGO hasMany (tem varios) COMENTARIOS E COMENTARIOS NÃO APROVADOSUM USUÁRIO hasOne (tem um) ENDEREÇOVÁRIOS ARTIGOS belongsToMany(pertencem a vários) ENDEREÇOS 26
  • 27.
    COBERTURA COM TEMPLATESE VIEWS ▸ Abstração de HTML com PHP ▸ Helpers para as mais diversas necessidades de view ▸ Blocos e elementos ▸ Layouts ▸ Views para XML e Json ▸ ViewBuilder para administrar as propriedades relacionadas a view 27
  • 28.
    COMO AS VIEWSFUNCIONAM 28
  • 29.
    ASSANDO COM OCONSOLE 29
  • 30.
  • 31.
    BOLOS RÁPIDOS COMO BAKE GERAÇÃO DE CÓDIGOS 31
  • 32.
    BOLOS RÁPIDOS COMO BAKE O COMANDO BAKE ALL 32
  • 33.
  • 34.
  • 35.
    SÓ MISTURAR COMLEITE E USAR PLUGINS E COMPONENTS PRONTOS QUE AGILIZAM NOSSO TRABALHO 35
  • 36.
    ROUTER MAPEANDO URLsDE BARBADA ▸ Mapeamento por array ▸ Aplicação de regras e possibilidade de ter classe propria ▸ Suporte a regex ▸ Rotas nomeadas ▸ Suporte a prefixos 36
  • 37.
    INTERNACIONALIZAÇÃO E LOCALIZAÇÃO ▸Configuração via .po ▸ i18n com prefixos para linguagens ▸ Tranformação de datas e moedas baseadas na localização ▸ Suporte a plural e singular em multi-linguagem 37
  • 38.
  • 39.
    MIGRATIONS DE BANCODE DADOS ▸ Wrapper to PHINX ▸ Criação de migrações especificas ▸ Possibilidade de rollback ▸ Callbacks antes e depois de rodar 39
  • 40.
    BUGIGANGAS QUE AJUDAMNO NOSSO DIA A DIA ▸ Caching ▸ CakeEmail ▸ Folder e File ▸ Hash ▸ Inflector ▸ Logging ▸ CakeNumber ▸ Security ▸ Set ▸ XML ▸ CakeTime 40
  • 41.
    A COMPARAÇÃO QUEO CARA DE BARBA DA TERCEIRA FILA VAI PERGUNTAR 41
  • 42.
    FINALIZANDO... ▸ Entenda suanecessidade ▸ Use o framework seguindo a documentação ▸ Não faça comparações incomparáveis ▸ Use filtro solar 42
  • 43.
    OBRIGADO A TODOSE CAMIGOAL! Perguntas? Meu nick na deepweb é @waldemarnt , me segue lá. Meu blog é: http://walde.co/ 43