SlideShare a Scribd company logo
1 of 34
Download to read offline
PHP Turbinado com CodeIgniter




           Conisli 2011
           05/11/2011


          Evaldo Junior
             (InFog)
Licença desta apresentação
             ●   CC BY 3.0
                   – Use
                   – Compartilhe
                   – Modifique
                   – Distribua modificações
             ●   Com duas condições:
                   – Mantenha os créditos
                      do autor
                   – Mantenha a mesma
                      licença
Evaldo Junior (InFog)
●   Tecnólogo em Processamento de Dados
       – FATEC
●   Pós – Gestão Estratégica de TI
       – Unimonte
●   Empreendedor
       – CaSoft Tecnologia (http://casoft.info)
●   Professor – Unimonte
●   GNU/Linux – 6 anos
●   Desenvolvedor PHP – 5 anos
●   Desenvolvedor CodeIgniter – 2 anos
●   GCC-SD
Sobre esta apresentação
    ●   História do PHP
    ●   Pontos fortes do PHP
    ●   Pontos fracos do PHP
    ●   O que é um framework?
    ●   CodeIgniter
    ●   Ferramentas do CodeIgniter
    ●   Turbinando seus aplicativos
História do PHP




Quando não conhecemos a história,
   estamos fadados à repeti-la.
História do PHP
●   Nasceu em 1994
●   Criada por Rasmus Lerdorf
       – Páginas dinâmicas, scripts
●   Era chamada de PHP/FI
       – Personal Home Pages/Form
          Interpreter
●   Em 1995 se tornou Software Livre
●   Escrito em C
Um pouco mais de história
     ●   Cresceu muito com a Internet
     ●   No fim de 1998:
            – PHP: HyperText Preprocessor
            – 10% dos domínios da época
            – Começou a ser reescrita por Zeev
               e Andi (Zend Engine)
     ●   Em 2000:
            – PHP4
            – CLI, Vários servidores HTTP
            – 20% dos domínios
Só mais um pouco de história
       ●   Em 2004:
             – PHP5
             – OO
       ●   2009:
             – PHP 5.3
                    • Namespaces
O PHP é aberto
●   O PHP é Software Livre
●   Muitos contribuem, no mundo
    todo!
       – Isso é ótimo!
       – Mas isso é ruim =(
●   Muitas funções na biblioteca
    padrão.
       – Para quase qualquer
          necessidade.
       – Falta padronização
PHP é fácil
●   Simples de aprender

●   Uma faca de dois gumes...
       – 08:00h:
             • Comecei a aprender PHP! Que
                legal!
       – 11:15h:
             • Ok, já sei PHP.
       – 15:37h:
             • Fechei meu primeiro “freela”
                com PHP =D
WEB + PHP = Fácil
  ●   Fácil, fácil, fácil!
  ●   PHP nasceu para a web;
  ●   Não é necessário muita coisa:
          – HTTP (Apache)
          – PHP
          – SGBD (MySQL, opcional)
                 • Basta escrever, colocar na raiz
                    do apache e tadá!
Espanto.




Já sou um hacker PHP!
Mas com o tempo.
  ●   Os softwares começam a crescer
      sem estrutura;
  ●   Começa a repetição de rotinas;
  ●   A mistura de PHP, HTML,
      JavaScript e CSS fica mais
      complexa;
  ●   Erros aparecem, e é difícil
      encontrá-los
  ●   Código espaguete
Fica impossível de manter!
Ok, hora de estudar
        ●   Problemas mais complexos
            podem exigir soluções mais
            SIMPLES!
        ●   Padrões de projeto.
               – MVC
        ●   Guia de estilos.
        ●   Estrutura.
        ●   Classes e componentes.
        ●   Padrões.
E se.
O cara foi embora e
não conhecemos a
                          ●   O trabalho aumentar?
 estrutura que ele
mesmo inventou...
                          ●   Entrar alguém na
                              equipe?
 O que faremos?
                          ●   Passar o projeto
                              adiante?
                                 – Documentação
                                 – Padronização
                                 – Reconhecimento
Alguma solução?

 Ouvi dizer que
 um framework
 ajuda bastante
na padronização
 e já tem muitas
   ferramentas
     prontas.


                                      Também já ouvi
                                      algo sobre isso.

                                     Mas existem tantos
                                      frameworks PHP
                                          por aí...
Framework?
●   Seguem padrões
●   (Em geral) são bem
    documentados
●   Muitos desenvolvedores os
    conhecem
●   Existem livros sobre alguns deles
●   Já incluem várias soluções para
    os problemas mais comuns
●   Ajudam a abstrair algumas partes
    do projeto.
CodeIgniter

●   Ellislab, Inc.
●   Base do Expression Engine;
●   Código aberto;
       – Um toolkit para desenvolver aplicações
          web de forma muito mais rápida do que
          escrever código do zero.
●   http://codeigniter.com
CodeIgniter
●   MVC;
●   Simples;
●   Rápido;
●   Flexível;
●   URLs amigáveis;
●   Bom para iniciantes em frameworks;
       – E é facilmente adaptável para os experientes.
●   Licença livre;
●   Documentação muito completa (Sério).
Uma pausa para o MVC

  ●   Model, View e Controller;
Pode ser
qualquer
SGDB




      Dispatcher e Routes
      Não fazem parte do MVC
CodeIgniter

●   Recursos
●   Arquitetura (metas)
●   Fluxo da Aplicação
●   URLs;
       – Controllers
       – Métodos
       – Parâmetros
●   Helpers e Libraries
●   Abstração do acesso ao banco
Recursos

●   Model-View-Controller     ●   Paginação
●   Extremamente leve         ●   Cache
●   Classe para banco de      ●   Log de erros
    dados com suporte a
    vários SGBDs
                              ●   Sistema de templates

●   Validação de forms
                              ●   Biblioteca XML-RPC

●   Filtro contra XSS e
                              ●   Classe para Testes
    CSRF                          Unitários

●   Gestão de Sessões
                              ●   URLs amigáveis

●   Classe para envio de e-
                              ●   Sistema de rotas
    mails (formatação html,       flexíveis
    anexos, etc)              ●   Hooks e extensões de
●   Manipulação de imagens        classes

●   Envio de arquivos
                              ●   Muitos, muitos helpers
Arquitetura (metas)

●   Instanciação Dinâmica
       – Vai usar? Carrega!
       – Não vai? Nem toca!
●   Acoplamento Fraco
       – As partes devem ser independentes, ou o
          mais próximo disso o possível.
●   Singularidade de Componentes
       – Cada componente faz a sua parte e faz o
          melhor que pode.
       – Evita ao máximo repetir funcionalidades
Fluxo de uma aplicação
Um detalhe importante



                        Chinês
Mas como ele facilita as coisas?
             ●   Padronização!
             ●   Documentação
             ●   Organização
                    – Onde alterar?
                    – Onde adicionar?
                    – Onde procurar os
                       problemas?
URLs do CI
●   www.meusite.com/produtos/destaques/mobile

        ROXO: Um controller (uma classe)


        VERDE: Método


        AZUL: Parâmetros para o método
Helpers
●   São os “ajudantes”
●   São basicamente um conjunto de
    funções
●   Os arquivos ficam em
    “system/helpers”.
●   Existem helpers para muitas
    funções:
       – Captcha, datas, e-mail, arquivos,
          forms, html, segurança, URLs...
Libraries
●   São classes
●   Também são ajudantes
●   Em geral reúnem funcionalidades que se
    encaixam melhor na OO e não como funções
    separadas.
●   Os arquivos ficam em “system/libraries”
Sparks!

●   Sistema de módulos/pacotes para o
    CodeIgniter
●   Integração com diversas bibliotecas
       – Doctrine, oAuth, MongoDB
●   Fica separado da aplicação
Qer aprender mais?
  ●   Site oficial:
         – http://codeigniter.com
  ●   Comunidades
  ●   Livros
  ●   Cursos
         – Turbine-se com CodeIgniter
         – turbinesecomcodeigniter.com.br
Perguntas?
Obrigado!

        Meus contatos
    ●   @InFog9
    ●   junior@casoft.info
    ●   infog.casoft.info



        Recomendo:
    ●   @casoft
    ●   @turbinese

More Related Content

What's hot

Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISCCriando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISCFlávio Lisboa
 
Desenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend FrameworkDesenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend FrameworkDomingos Teruel
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com PythonPythOnRio
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
Unit Test JavaScript
Unit Test JavaScriptUnit Test JavaScript
Unit Test JavaScriptDan Vitoriano
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2Flávio Lisboa
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaEduardo Bregaida
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks phpIgor Moura
 
Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeansSliedesharessbarbosa
 
Começando com Zend Framework 2
Começando com Zend Framework 2Começando com Zend Framework 2
Começando com Zend Framework 2Cezar Souza
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesRosicleia Frasson
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2Cezar Souza
 
Arquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAOArquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAOLeonardo Sousa
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPSérgio Vilar
 

What's hot (20)

Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISCCriando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
 
Desenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend FrameworkDesenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend Framework
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Unit Test JavaScript
Unit Test JavaScriptUnit Test JavaScript
Unit Test JavaScript
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeans
 
Começando com Zend Framework 2
Começando com Zend Framework 2Começando com Zend Framework 2
Começando com Zend Framework 2
 
Frameworks em Java
Frameworks em JavaFrameworks em Java
Frameworks em Java
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Java Web Fácil com VRaptor
Java Web Fácil com VRaptorJava Web Fácil com VRaptor
Java Web Fácil com VRaptor
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
 
Arquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAOArquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAO
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
 
MVC & Zend Framework
MVC & Zend FrameworkMVC & Zend Framework
MVC & Zend Framework
 

Similar to PHP Turbinado com CodeIgniter - Conisli 2011

O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?Fabio Janiszevski
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro Viebrantz
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraKleber Silva
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
 
Deixando de ser moleque com PHP
Deixando de ser moleque com PHPDeixando de ser moleque com PHP
Deixando de ser moleque com PHPVinícius Krolow
 
Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013George Mendonça
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonFlávio Ribeiro
 
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?tdc-globalcode
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetMarcos Petry
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel PetryTchelinux
 
P01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorP01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorLeandro Ferreira
 

Similar to PHP Turbinado com CodeIgniter - Conisli 2011 (20)

O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Desenvolvimento web e PHP
Desenvolvimento web e PHPDesenvolvimento web e PHP
Desenvolvimento web e PHP
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e Segura
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
Deixando de ser moleque com PHP
Deixando de ser moleque com PHPDeixando de ser moleque com PHP
Deixando de ser moleque com PHP
 
Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
 
Web tools pt-br
Web tools pt-brWeb tools pt-br
Web tools pt-br
 
P01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorP01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhor
 

More from Evaldo Junior

Dafiti Tech Conference - PHP Levado a Sério
Dafiti Tech Conference - PHP Levado a SérioDafiti Tech Conference - PHP Levado a Sério
Dafiti Tech Conference - PHP Levado a SérioEvaldo Junior
 
Lidando com Código Duplicado - PHP Conference Brasil 2013
Lidando com Código Duplicado - PHP Conference Brasil 2013Lidando com Código Duplicado - PHP Conference Brasil 2013
Lidando com Código Duplicado - PHP Conference Brasil 2013Evaldo Junior
 
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013Evaldo Junior
 
Lidando com Código Duplicado - DevInSantos 2013
Lidando com Código Duplicado - DevInSantos 2013Lidando com Código Duplicado - DevInSantos 2013
Lidando com Código Duplicado - DevInSantos 2013Evaldo Junior
 
Ambiente livre para desenvolvimento web
Ambiente livre para desenvolvimento webAmbiente livre para desenvolvimento web
Ambiente livre para desenvolvimento webEvaldo Junior
 
A Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosA Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosEvaldo Junior
 
Sustentabilidade de Projetos Livres
Sustentabilidade de Projetos LivresSustentabilidade de Projetos Livres
Sustentabilidade de Projetos LivresEvaldo Junior
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com GitEvaldo Junior
 

More from Evaldo Junior (10)

Dafiti Tech Conference - PHP Levado a Sério
Dafiti Tech Conference - PHP Levado a SérioDafiti Tech Conference - PHP Levado a Sério
Dafiti Tech Conference - PHP Levado a Sério
 
Lidando com Código Duplicado - PHP Conference Brasil 2013
Lidando com Código Duplicado - PHP Conference Brasil 2013Lidando com Código Duplicado - PHP Conference Brasil 2013
Lidando com Código Duplicado - PHP Conference Brasil 2013
 
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
 
Lidando com Código Duplicado - DevInSantos 2013
Lidando com Código Duplicado - DevInSantos 2013Lidando com Código Duplicado - DevInSantos 2013
Lidando com Código Duplicado - DevInSantos 2013
 
Ambiente livre para desenvolvimento web
Ambiente livre para desenvolvimento webAmbiente livre para desenvolvimento web
Ambiente livre para desenvolvimento web
 
Evolucao php2
Evolucao php2Evolucao php2
Evolucao php2
 
A Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosA Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In Santos
 
Python para devs
Python para devsPython para devs
Python para devs
 
Sustentabilidade de Projetos Livres
Sustentabilidade de Projetos LivresSustentabilidade de Projetos Livres
Sustentabilidade de Projetos Livres
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 

PHP Turbinado com CodeIgniter - Conisli 2011

  • 1. PHP Turbinado com CodeIgniter Conisli 2011 05/11/2011 Evaldo Junior (InFog)
  • 2. Licença desta apresentação ● CC BY 3.0 – Use – Compartilhe – Modifique – Distribua modificações ● Com duas condições: – Mantenha os créditos do autor – Mantenha a mesma licença
  • 3. Evaldo Junior (InFog) ● Tecnólogo em Processamento de Dados – FATEC ● Pós – Gestão Estratégica de TI – Unimonte ● Empreendedor – CaSoft Tecnologia (http://casoft.info) ● Professor – Unimonte ● GNU/Linux – 6 anos ● Desenvolvedor PHP – 5 anos ● Desenvolvedor CodeIgniter – 2 anos ● GCC-SD
  • 4. Sobre esta apresentação ● História do PHP ● Pontos fortes do PHP ● Pontos fracos do PHP ● O que é um framework? ● CodeIgniter ● Ferramentas do CodeIgniter ● Turbinando seus aplicativos
  • 5. História do PHP Quando não conhecemos a história, estamos fadados à repeti-la.
  • 6. História do PHP ● Nasceu em 1994 ● Criada por Rasmus Lerdorf – Páginas dinâmicas, scripts ● Era chamada de PHP/FI – Personal Home Pages/Form Interpreter ● Em 1995 se tornou Software Livre ● Escrito em C
  • 7. Um pouco mais de história ● Cresceu muito com a Internet ● No fim de 1998: – PHP: HyperText Preprocessor – 10% dos domínios da época – Começou a ser reescrita por Zeev e Andi (Zend Engine) ● Em 2000: – PHP4 – CLI, Vários servidores HTTP – 20% dos domínios
  • 8. Só mais um pouco de história ● Em 2004: – PHP5 – OO ● 2009: – PHP 5.3 • Namespaces
  • 9. O PHP é aberto ● O PHP é Software Livre ● Muitos contribuem, no mundo todo! – Isso é ótimo! – Mas isso é ruim =( ● Muitas funções na biblioteca padrão. – Para quase qualquer necessidade. – Falta padronização
  • 10. PHP é fácil ● Simples de aprender ● Uma faca de dois gumes... – 08:00h: • Comecei a aprender PHP! Que legal! – 11:15h: • Ok, já sei PHP. – 15:37h: • Fechei meu primeiro “freela” com PHP =D
  • 11. WEB + PHP = Fácil ● Fácil, fácil, fácil! ● PHP nasceu para a web; ● Não é necessário muita coisa: – HTTP (Apache) – PHP – SGBD (MySQL, opcional) • Basta escrever, colocar na raiz do apache e tadá!
  • 12. Espanto. Já sou um hacker PHP!
  • 13. Mas com o tempo. ● Os softwares começam a crescer sem estrutura; ● Começa a repetição de rotinas; ● A mistura de PHP, HTML, JavaScript e CSS fica mais complexa; ● Erros aparecem, e é difícil encontrá-los ● Código espaguete
  • 15. Ok, hora de estudar ● Problemas mais complexos podem exigir soluções mais SIMPLES! ● Padrões de projeto. – MVC ● Guia de estilos. ● Estrutura. ● Classes e componentes. ● Padrões.
  • 16. E se. O cara foi embora e não conhecemos a ● O trabalho aumentar? estrutura que ele mesmo inventou... ● Entrar alguém na equipe? O que faremos? ● Passar o projeto adiante? – Documentação – Padronização – Reconhecimento
  • 17. Alguma solução? Ouvi dizer que um framework ajuda bastante na padronização e já tem muitas ferramentas prontas. Também já ouvi algo sobre isso. Mas existem tantos frameworks PHP por aí...
  • 18. Framework? ● Seguem padrões ● (Em geral) são bem documentados ● Muitos desenvolvedores os conhecem ● Existem livros sobre alguns deles ● Já incluem várias soluções para os problemas mais comuns ● Ajudam a abstrair algumas partes do projeto.
  • 19. CodeIgniter ● Ellislab, Inc. ● Base do Expression Engine; ● Código aberto; – Um toolkit para desenvolver aplicações web de forma muito mais rápida do que escrever código do zero. ● http://codeigniter.com
  • 20. CodeIgniter ● MVC; ● Simples; ● Rápido; ● Flexível; ● URLs amigáveis; ● Bom para iniciantes em frameworks; – E é facilmente adaptável para os experientes. ● Licença livre; ● Documentação muito completa (Sério).
  • 21. Uma pausa para o MVC ● Model, View e Controller; Pode ser qualquer SGDB Dispatcher e Routes Não fazem parte do MVC
  • 22. CodeIgniter ● Recursos ● Arquitetura (metas) ● Fluxo da Aplicação ● URLs; – Controllers – Métodos – Parâmetros ● Helpers e Libraries ● Abstração do acesso ao banco
  • 23. Recursos ● Model-View-Controller ● Paginação ● Extremamente leve ● Cache ● Classe para banco de ● Log de erros dados com suporte a vários SGBDs ● Sistema de templates ● Validação de forms ● Biblioteca XML-RPC ● Filtro contra XSS e ● Classe para Testes CSRF Unitários ● Gestão de Sessões ● URLs amigáveis ● Classe para envio de e- ● Sistema de rotas mails (formatação html, flexíveis anexos, etc) ● Hooks e extensões de ● Manipulação de imagens classes ● Envio de arquivos ● Muitos, muitos helpers
  • 24. Arquitetura (metas) ● Instanciação Dinâmica – Vai usar? Carrega! – Não vai? Nem toca! ● Acoplamento Fraco – As partes devem ser independentes, ou o mais próximo disso o possível. ● Singularidade de Componentes – Cada componente faz a sua parte e faz o melhor que pode. – Evita ao máximo repetir funcionalidades
  • 25. Fluxo de uma aplicação
  • 27. Mas como ele facilita as coisas? ● Padronização! ● Documentação ● Organização – Onde alterar? – Onde adicionar? – Onde procurar os problemas?
  • 28. URLs do CI ● www.meusite.com/produtos/destaques/mobile ROXO: Um controller (uma classe) VERDE: Método AZUL: Parâmetros para o método
  • 29. Helpers ● São os “ajudantes” ● São basicamente um conjunto de funções ● Os arquivos ficam em “system/helpers”. ● Existem helpers para muitas funções: – Captcha, datas, e-mail, arquivos, forms, html, segurança, URLs...
  • 30. Libraries ● São classes ● Também são ajudantes ● Em geral reúnem funcionalidades que se encaixam melhor na OO e não como funções separadas. ● Os arquivos ficam em “system/libraries”
  • 31. Sparks! ● Sistema de módulos/pacotes para o CodeIgniter ● Integração com diversas bibliotecas – Doctrine, oAuth, MongoDB ● Fica separado da aplicação
  • 32. Qer aprender mais? ● Site oficial: – http://codeigniter.com ● Comunidades ● Livros ● Cursos – Turbine-se com CodeIgniter – turbinesecomcodeigniter.com.br
  • 34. Obrigado! Meus contatos ● @InFog9 ● junior@casoft.info ● infog.casoft.info Recomendo: ● @casoft ● @turbinese