SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Desmistificando o JavaScript
Desmistificando o JavaScriptDesmistificando o JavaScript
Desmistificando o JavaScriptTais Reis
 
Curso JavaScript - Aula sobre DOM e Ajax
Curso JavaScript - Aula sobre DOM e AjaxCurso JavaScript - Aula sobre DOM e Ajax
Curso JavaScript - Aula sobre DOM e AjaxTiago Antônio da Silva
 
PhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaPhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaHenrique Gogó
 
Apresentação zend framework 2 parte 1
Apresentação zend framework 2   parte 1 Apresentação zend framework 2   parte 1
Apresentação zend framework 2 parte 1 Edgar Dantas
 

La actualidad más candente (9)

Desmistificando o JavaScript
Desmistificando o JavaScriptDesmistificando o JavaScript
Desmistificando o JavaScript
 
Introducao rubyonrails
Introducao rubyonrailsIntroducao rubyonrails
Introducao rubyonrails
 
Curso JavaScript - Aula sobre DOM e Ajax
Curso JavaScript - Aula sobre DOM e AjaxCurso JavaScript - Aula sobre DOM e Ajax
Curso JavaScript - Aula sobre DOM e Ajax
 
PhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaPhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha Camarada
 
Node.js for Noobs
Node.js for NoobsNode.js for Noobs
Node.js for Noobs
 
Realtime com node.js e socket.io
Realtime com node.js e socket.ioRealtime com node.js e socket.io
Realtime com node.js e socket.io
 
Apresentação zend framework 2 parte 1
Apresentação zend framework 2   parte 1 Apresentação zend framework 2   parte 1
Apresentação zend framework 2 parte 1
 
PHPMongoDB
PHPMongoDBPHPMongoDB
PHPMongoDB
 
MongoDB
MongoDBMongoDB
MongoDB
 

Similar a Como o CakePHP ajuda a criar bolos de código rápido

Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Renato Groff
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Renato Groff
 
Ruby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao FrameworkRuby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao FrameworkGuilherme Carlos
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edtedbrunoaalves
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Renato Groff
 
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...Renato Groff
 
NoSQL na nuvem: utilizando o DocumentDB
NoSQL na nuvem: utilizando o DocumentDBNoSQL na nuvem: utilizando o DocumentDB
NoSQL na nuvem: utilizando o DocumentDBRenato Groff
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Renato Groff
 
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...Renato Groff
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Renato Groff
 
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...Renato Groff
 
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...iMasters
 
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Renato Groff
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopDiego Sana
 
Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...
Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...
Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...Renato Groff
 

Similar a Como o CakePHP ajuda a criar bolos de código rápido (20)

Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
 
Mongo db
Mongo dbMongo db
Mongo db
 
Ruby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao FrameworkRuby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao Framework
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
 
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
 
Grails
GrailsGrails
Grails
 
NoSQL na nuvem: utilizando o DocumentDB
NoSQL na nuvem: utilizando o DocumentDBNoSQL na nuvem: utilizando o DocumentDB
NoSQL na nuvem: utilizando o DocumentDB
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
 
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
 
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
 
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...
Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...
Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...
 

Más de Waldemar Neto

12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwords12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwordsWaldemar Neto
 
12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwords12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwordsWaldemar Neto
 
Construindo APIs testáveis com Node.js - RSJS
Construindo APIs testáveis com Node.js - RSJSConstruindo APIs testáveis com Node.js - RSJS
Construindo APIs testáveis com Node.js - RSJSWaldemar Neto
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerWaldemar Neto
 
Elasticsearch Aggregations
Elasticsearch AggregationsElasticsearch Aggregations
Elasticsearch AggregationsWaldemar Neto
 
Symfony2 e Elasticsearch com FosElasticaBundle
Symfony2 e Elasticsearch com FosElasticaBundleSymfony2 e Elasticsearch com FosElasticaBundle
Symfony2 e Elasticsearch com FosElasticaBundleWaldemar Neto
 
Monitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - KibanaMonitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - KibanaWaldemar Neto
 
Elasticsearch de dentro para fora
Elasticsearch de dentro para foraElasticsearch de dentro para fora
Elasticsearch de dentro para foraWaldemar Neto
 
Elasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queriesElasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queriesWaldemar Neto
 
No mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesNo mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesWaldemar Neto
 
No sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglotaNo sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglotaWaldemar Neto
 
Android para padawns
Android para padawnsAndroid para padawns
Android para padawnsWaldemar Neto
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasWaldemar Neto
 
CakePHP workshop ifsul
CakePHP workshop ifsulCakePHP workshop ifsul
CakePHP workshop ifsulWaldemar Neto
 
O que é esteganografia
O que é esteganografiaO que é esteganografia
O que é esteganografiaWaldemar Neto
 
Divisão de conhecimento e open source
Divisão de conhecimento e open sourceDivisão de conhecimento e open source
Divisão de conhecimento e open sourceWaldemar Neto
 

Más de Waldemar Neto (18)

12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwords12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwords
 
12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwords12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwords
 
Construindo APIs testáveis com Node.js - RSJS
Construindo APIs testáveis com Node.js - RSJSConstruindo APIs testáveis com Node.js - RSJS
Construindo APIs testáveis com Node.js - RSJS
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
 
Elasticsearch Aggregations
Elasticsearch AggregationsElasticsearch Aggregations
Elasticsearch Aggregations
 
Symfony2 e Elasticsearch com FosElasticaBundle
Symfony2 e Elasticsearch com FosElasticaBundleSymfony2 e Elasticsearch com FosElasticaBundle
Symfony2 e Elasticsearch com FosElasticaBundle
 
ELK introduction
ELK introductionELK introduction
ELK introduction
 
Monitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - KibanaMonitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - Kibana
 
Elasticsearch de dentro para fora
Elasticsearch de dentro para foraElasticsearch de dentro para fora
Elasticsearch de dentro para fora
 
Elasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queriesElasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queries
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
 
No mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesNo mundo das ap is com Restful webservices
No mundo das ap is com Restful webservices
 
No sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglotaNo sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglota
 
Android para padawns
Android para padawnsAndroid para padawns
Android para padawns
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscas
 
CakePHP workshop ifsul
CakePHP workshop ifsulCakePHP workshop ifsul
CakePHP workshop ifsul
 
O que é esteganografia
O que é esteganografiaO que é esteganografia
O que é esteganografia
 
Divisão de conhecimento e open source
Divisão de conhecimento e open sourceDivisão de conhecimento e open source
Divisão de conhecimento e open source
 

Como o CakePHP ajuda a criar bolos de código rápido

  • 1. O BOLO AINDA SERVE MUITA GENTE 1
  • 2. OPA! Sou o Waldemar Neto Me siga na deepweb @waldemarnt blog: http://walde.co/ 2
  • 3. 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
  • 5. 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
  • 6. O BOLO DE PHP 6
  • 8. 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
  • 10. MÃO NA MASSA A RECEITA PARA A VERSÃO 3.X 10
  • 13. ANALISANDO O RECHEIO É hora de pôr o dedo no bolo 13
  • 14. 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
  • 16. 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
  • 17. 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
  • 18. Os ingredientes que formam o Model. ISSO TEM CHEIRO DE MODEL? 18
  • 19. Características da Table. UMA PITADA DE TABLE ▸ Classe relacionada à tabela do banco de dados ▸ Validação de dados ▸ Callbacks ▸ Behaviors 19
  • 20. 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
  • 21. 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
  • 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
  • 26. 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
  • 27. 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
  • 28. COMO AS VIEWS FUNCIONAM 28
  • 29. ASSANDO COM O CONSOLE 29
  • 31. BOLOS RÁPIDOS COM O BAKE GERAÇÃO DE CÓDIGOS 31
  • 32. BOLOS RÁPIDOS COM O BAKE O COMANDO BAKE ALL 32
  • 35. SÓ MISTURAR COM LEITE E USAR PLUGINS E COMPONENTS PRONTOS QUE AGILIZAM NOSSO TRABALHO 35
  • 36. 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
  • 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
  • 39. MIGRATIONS DE BANCO DE DADOS ▸ Wrapper to PHINX ▸ Criação de migrações especificas ▸ Possibilidade de rollback ▸ Callbacks antes e depois de rodar 39
  • 40. BUGIGANGAS QUE AJUDAM NO NOSSO DIA A DIA ▸ Caching ▸ CakeEmail ▸ Folder e File ▸ Hash ▸ Inflector ▸ Logging ▸ CakeNumber ▸ Security ▸ Set ▸ XML ▸ CakeTime 40
  • 41. A COMPARAÇÃO QUE O CARA DE BARBA DA TERCEIRA FILA VAI PERGUNTAR 41
  • 42. FINALIZANDO... ▸ Entenda sua necessidade ▸ Use o framework seguindo a documentação ▸ Não faça comparações incomparáveis ▸ Use filtro solar 42
  • 43. OBRIGADO A TODOS E CAMIGOAL! Perguntas? Meu nick na deepweb é @waldemarnt , me segue lá. Meu blog é: http://walde.co/ 43