Como criar seu próprio
  Framework Web


     Hiarison Gigante
     @gigantedesousa
Apresentação

- Desenvolvedor (~ 5 anos)
- Hobbysta de eletrônica
- Atualmente bolsista NCA
como criar um
framework web?!1!
mas... o que é
 framework?
Conceito

Um framework é um conjunto de classes
cooperantes que compõem um projeto
reutilizável para uma classe específica de
software

Erich Gamma
Quem é Erich Gamma?
De onde veio a ideia?
De onde veio a ideia?
Conceituação...


Conceituação...
Conceituação...
Não parece novidade...
Não parece novidade...


    Biblioteca de Classes
              X
         Framework
Diferença



Conceituação...
Hollywood Principle
“Don't call us, we'll call you”
Design Patterns
      X
 Framework
Design Patterns


- Mais abstratos
- Menos especializados
Vantagens Framework

-   Redução de custos
-   Redução do “time-to-market”
-   Maximização do reuso
-   Desenvolvedores se concentram em
    adicionar valor ao software
Desvantagens Framework

- Construir um framework é complexo
- Reuso não vem sozinho: é preciso
  planejamento
- Os benefícios são realizados a longo
  prazo
Exemplos (alguns)
Por que,
então,
criar um
framework?
Minha história
Fabien Potencier
Bons motivos

- Por aprendizado e diversão
- Criar para um domínio específico
- Deseja refatorar um código já
  existente
- Para provar ao mundo que você é
  capaz!
A minha ideia (LizPHP)

- Roteamento de requisições simples
- Configuração de ambientes:
  desenvolvimento e produção
- Abstração Camada de Dados
- Modelo de renderização de páginas
  com mais html
- Linguagem: PHP
“Meus” padrões (alguns)


          MVC
“Meus” padrões (alguns)
“Meus” padrões (alguns)




      Template Method (GoF Comportamental)
Show me the code!
Perguntas?
Obrigado!

   Hiarison Gigante
  @gigantedesousa
bitbucket.org/gigante
Referencias
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/frame/oque.htm
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/frame/deffw.htm
http://www2.dbd.puc-
rio.br/pergamum/tesesabertas/0410823_06_cap_02.pdf
http://pt.wikipedia.org/wiki/Framework
http://pt.wikipedia.org/wiki/Template_Method
https://github.com/fabpot/Create-Your-Framework
http://martinfowler.com/books/#eaa
Imagens
http://upload.wikimedia.org/wikipedia/commons/7/79/Lego_Mongkok_02.jpg
http://img.gawkerassets.com/img/17uoztzz3eu9rjpg/original.jpg
http://www.instablogsimages.com/1/2012/03/24/brads_lego_guitar_image_title_gkioy.jpg
http://4.bp.blogspot.com/-KQSPX3_w6pg/Trv-
ssF12WI/AAAAAAAAAkY/bCT9CcipOOQ/s1600/lego-city_1.jpg
http://2.bp.blogspot.com/-
Fk4PIJPi3b0/ToUWx4CzFhI/AAAAAAAACeQ/snst8wzcUUs/s1600/Minecraft-1.91.jpg
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/frame/frame1.gif
http://upload.wikimedia.org/wikipedia/commons/2/20/ClassDiagramTemplateMethod.png
http://www.touilleur-express.fr/wp-content/uploads/2012/01/erich_gamma.jpg
http://codinghorror.typepad.com/.a/6a0120a85dcdae970b012877701400970c-pi
http://guiadoestudante.abril.com.br/blogs/melhores-faculdades/files/2012/04/salario-de-
um-engenheiro-civil.png
http://www.trigopane.com.br/blog/wp-content/uploads/2012/06/18_sufle.jpg
Imagens
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/frame/frame3.gif
http://images.politico.com/global/2012/06/120621_hollywood_sign_ap_605.jpg
http://alcaz.com.br/tecnologia/wp-content/uploads/2012/05/nerd2.jpg
http://codeworks.com.br/pages/artigos/wp-content/uploads/2012/06/zf-logo-mark.png
http://symfony.com/logos/symfony1.gif
http://portal.ifrn.edu.br/campus/caico/noticias/desenvolvimento-web-com-ruby-on-
rails/image_preview
http://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Pair_programming_1.jpg/33
0px-Pair_programming_1.jpg
http://www.extreme-sensio.com/wp-content/uploads/sensio/07_people/fabien-potencier-
480x150.jpg
http://london2012.live.symfony.com/images/sensio-labs.png
http://mbanagouro.net/site/wp-content/uploads/2012/02/mvc-pipeline.png
http://4.bp.blogspot.com/-ybcKBKeP_XI/T9wNl8c-
jtI/AAAAAAAABco/_AawSUArPbY/s1600/perguntas_frequentes.jpg

Como criar seu próprio Framework