SlideShare uma empresa Scribd logo
Desenvolvimento Web Avançado usando
PHP: conceitos básicos, perspectivas e
             tendências


                    Thiago Jabur Bittar
                     thiago@aptor.com.br




                    27 de Setembro de 2007
Conceitos Básicos de PHP

     • PHP: quot;PHP Hypertext Preprocessorquot;
     • Tecnologia de código livre
        – Criada Rasmus Lerdorf (Dinamarca)
          Andi Gutmans e Zeev Suraski (Israel)
     • Pode ser incorporado como módulo de um
       servidor web
        – IIS e Apache (Windows e Unix)
     • www.php.net
        – informações detalhadas
        – manual
     • Linguagem interpretada
Conceitos Básicos de PHP

     • Esquema conceitual de uma aplicação
       Web
Conceitos Básicos de PHP

     • Ambiente de execução - Variáveis
Hello World

     <h1>Exemplo</h1>
     <?php
       $firstvar = quot;Hello Worldquot;;
       echo $firstvar;
     ?>
Orientação a Objetos em PHP

     • A palavra-chave class indica uma declaração de
       classe, delimitada por chaves.
     • Dentro da classe podemos definir
        – atributos (variáveis) e
        – métodos (funções)
     • Formam o estado e o comportamento do objeto.
     • Um método com o mesmo nome da classe é o
       construtor do objeto, sendo executado sempre que
       uma instância for criada.
     • A classe deve utilizar a variável $this para
       referenciar seus próprios métodos e atributos
Uma classe simples

     class ContaCorrente
     {
       var $saldo;
       function ContaCorrente ($valor) {
           $this->saldo = $valor;
       }
       function saque ($valor) {
           if ($this->saldo >= $valor)
                  $this->saldo = $valor;
       }
       function deposito ($valor) {
           $this->saldo += $valor;
       }
     }
Utilizando uma classe

     • A definição da classe deve estar
       disponível no script ou página PHP que
       utiliza a classe
        – comandos include ou require
     • Um objeto da classe deve ser instanciado
       pelo operador new.
     • O operador -> permite referenciarmos
       atributos e métodos do objeto
Utilizando a classe

      <?php
      include quot;ContaCorrente.phpquot;;

      $conta = new ContaCorrente (1000.0);

      echo (quot;Saldo inicial: { $conta->saldo }<BR/>quot;);

      $conta->saque (150.0);

      echo (quot;Novo saldo: {$conta->saldo}<BR/>quot;);

      ?>
IDEs para desenvolvimento WEB

     • Eclipse
        – Vantagens:
           • Suporte a inúmeros plugins, inclusive de
             modelagem;
           • Independente de linguagem, ambiente
             único
IDEs para desenvolvimento WEB

     • Dreamweaver
       - Desenvolvedor de códigos web
          - (.php, .asp, .js, .html, .xml, e etc)
       - Oferece mais auxílios para programação
         web do que outros ambientes
       - Facilidade de configuração
       - Integração a servidores
Dreamweaver


               Definição da
              aplicação em
              que se deseja
                trabalhar
IDEs para desenvolvimento WEB

     • Delphi for PHP
       –   http://www.codegear.com
       –   IDE Visual para PHP
       –   Aumento de produtividade
       –   Arquitetura de Componentes
       –   Baseado em scripts e bibliotecas populares
           e código aberto
AJAX

       • Asynchronous Javascript And XML
         – Recuperação assíncrona de dados
            • objeto XMLHttpRequest;
         – Apresentação baseada em padrões, usando
           XHTML e CSS;
         – Exposição e interação dinâmica usando o DOM;
         – Intercâmbio e manipulação de dados usando
           XML e XSLT;
         – JavaScript une as tecnologias.
Frameworks Ajax

     • Prototype
       – http://www.prototypejs.org/

       - Objetiva facilitar o desenvolvimento de
         aplicações dinâmicas na Web
       - manipulação de DOM
       - tratamento de eventos
Frameworks Ajax

     Sajax

     • É uma ferramenta Open Source para fazer
       a programação Web, utilizando Ajax, o
       mais fácil possível
     • http://www.modernmethod.com/sajax/
     • Possui diversos exemplos e tutoriais no
       próprio site
Frameworks Ajax

     • Mootools
       – http://mootools.net/

       – Escrever códigos elaborados, flexíveis e
         compatíveis com diversos navegadores
Framework PHP

    • CakePHP
      – http://www.cakephp.org/
      – http://manual.cakephp.org/
      – Convenção ao invés de configuração
         • ao contrário de outros frameworks onde
           existem enormes XML de configuração de
           aplicativo;
      – Arquitetura MVC (Model, View, Controller)
      – Pastas da aplicação estruturadas
Integração e intercâmbio - XML

     • XML (eXtensible Markup Language)
        – padrão da W3C para gerar linguagens de
          marcação para necessidades especiais
        – capaz de descrever diversos tipos de
          dados
        – separação do conteúdo e da formatação
        – legibilidade
Folha de estilos - XSL

        – XSL – eXtensible Stylesheet Language
           • pode ser usada para transformar XML em
             HTML
        – Consiste de três métodos:
           • transformar documentos XML
           • definir partes e padrões do XML
           • formatar documentos XML
SGBD MySQL

    • O MySQL foi criado na Suécia por David
      Axmark, Allan Larsson e Michael Widenius
    • Usa a SQL(Structured Query Language) e
      seus padrões
    • Livre para aplicativos Web
    • www.mysql.com
    • A versão mais atual é a 5.0 (há a versão
      Beta 5.1)
    • Considerado um dos SGBD mais
      eficientes para a Web
SGBD MySQL

    Exemplo de Tabela do MySQL
SGBD MySQL

    • Segue a sintaxe da SQL
      Ex: CREATE, DROP, INSERT, SELECT,
      UPDATE, etc.
    • Comando de criação de uma tabela de
      teste:
      CREATE TABLE pessoa(
      id_user INTEGER AUTO_INCREMENT,
      nome VARCHAR(80),
      telefone VARCHAR(10),
      PRIMARY KEY(id_user)
      );
SGBD MySQL

    Exemplos de Comandos com MySQL:
      - SELECT * FROM pessoa;

      - SELECT nome, tel FROM pessoa;

      - INSERT INTO pessoa (nome, tel, cpf) VALUES
      (‘Andre’,’00-00001111’,’01100110188’);

      - UPDATE pessoa SET nome = ‘Andree’ WHERE
      cpf = ‘01100110188’;
phpMyAdmin

    • phpMyAdmin
       – ferramenta desenvolvida com PHP
       – para o gerenciamento de banco de dados
         MySQL.
    • Sua primeira versão foi lançada em 1998
    • http://www.phpmyadmin.net
Modelagem de BD

    • DBDesigner

      – Criação Gráfica do Modelo Entidade
        Relacionamento
      – Geração dos comandos SQL para a
        criação do BD Modelado
MySQL + Apache + PHP

      Esse três softwares livres são
      grandemente utilizados, pois além de
      gratuitos, são de alta qualidade

      Softwares que instalam e configuram os 3
      aplicativos citados em ambiente Windows
      - Serv-n
      - VertrigoServ
          - também inclui o phpMyAdmin
         - http://vertrigo.sourceforge.net
VertrigoServ

               • Facilidades para
                 configuração do
                 ambiente de
                 desenvolvimento.
Padrões Web

    • Procure utilizar padrões de interface Web
       – minimizará o tempo de desenvolvimento
       – ajudará a trazer maior usabilidade ao
         usuário
       – melhores práticas
Padrões de Welie

     • Para design de interação

                                  Mais de
                                    125
                                  padrões.
Padrão de Welie - Automotive Site
Padrões Web Yahoo!
                     http://developer.yahoo.com/ypatterns/
Outros Padrões para Web

     • Designing Interfaces
        – Jenifer Tidwell
        – http://designinginterfaces.com/
     • Web Patterns
        – UC Berkeley
        – http://harbinger.sims.berkeley.edu/ui_desig
          npatterns/webpatterns2/webpatterns/home.
          php
     • IAWiki on Website patterns
        – Feita por voluntários
        – http://www.iawiki.net/WebsitePatterns
Dúvidas

     • Alguma dúvida?
     • E-mail: thiago@aptor.com.br

     • Obrigado!

Mais conteúdo relacionado

Mais procurados

Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serio
Jaydson Gomes
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Rodrigo Bueno Santa Maria, BS, MBA
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
Bruno Grange
 
PHP - Programação para seres humanos
PHP - Programação para seres humanosPHP - Programação para seres humanos
PHP - Programação para seres humanos
Caike Souza
 
HTML/CSS Patterns
HTML/CSS PatternsHTML/CSS Patterns
HTML/CSS Patterns
Leonardo Quixada
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
Fabio Noth
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
Carlos Eduardo Kadu
 
TDC 2010: Ambiente de Integração Contínua
TDC 2010: Ambiente de Integração ContínuaTDC 2010: Ambiente de Integração Contínua
TDC 2010: Ambiente de Integração Contínua
Helder da Rocha
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
Sérgio Vilar
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza Bastos
iMasters
 
Conexão Java 2006: Introdução ao Ajax
Conexão Java 2006: Introdução ao AjaxConexão Java 2006: Introdução ao Ajax
Conexão Java 2006: Introdução ao Ajax
Helder da Rocha
 
Web Offline
Web OfflineWeb Offline
Web Offline
Bruno Catão
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0
Paulo Neto
 
Nadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryNadando em Dinheiro com jQuery
Nadando em Dinheiro com jQuery
Reinaldo Junior
 
Introdução a HTML, CSS, JS, Ajax
Introdução a HTML, CSS, JS, AjaxIntrodução a HTML, CSS, JS, Ajax
Introdução a HTML, CSS, JS, Ajax
Gabriel Kamimura Yano
 
Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On Rails
Milton Moura
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Otávio Calaça Xavier
 
Angular js
Angular jsAngular js
Angular js
Bruno Catão
 
Construindo layout de sites com CSS
Construindo layout de sites com CSSConstruindo layout de sites com CSS
Construindo layout de sites com CSS
Talita Pagani
 
Introdução ao CakePHP
Introdução ao CakePHPIntrodução ao CakePHP
Introdução ao CakePHP
2km interativa!
 

Mais procurados (20)

Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serio
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
PHP - Programação para seres humanos
PHP - Programação para seres humanosPHP - Programação para seres humanos
PHP - Programação para seres humanos
 
HTML/CSS Patterns
HTML/CSS PatternsHTML/CSS Patterns
HTML/CSS Patterns
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
TDC 2010: Ambiente de Integração Contínua
TDC 2010: Ambiente de Integração ContínuaTDC 2010: Ambiente de Integração Contínua
TDC 2010: Ambiente de Integração Contínua
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza Bastos
 
Conexão Java 2006: Introdução ao Ajax
Conexão Java 2006: Introdução ao AjaxConexão Java 2006: Introdução ao Ajax
Conexão Java 2006: Introdução ao Ajax
 
Web Offline
Web OfflineWeb Offline
Web Offline
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0
 
Nadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryNadando em Dinheiro com jQuery
Nadando em Dinheiro com jQuery
 
Introdução a HTML, CSS, JS, Ajax
Introdução a HTML, CSS, JS, AjaxIntrodução a HTML, CSS, JS, Ajax
Introdução a HTML, CSS, JS, Ajax
 
Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On Rails
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
 
Angular js
Angular jsAngular js
Angular js
 
Construindo layout de sites com CSS
Construindo layout de sites com CSSConstruindo layout de sites com CSS
Construindo layout de sites com CSS
 
Introdução ao CakePHP
Introdução ao CakePHPIntrodução ao CakePHP
Introdução ao CakePHP
 

Destaque

Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?
iniciativaverds
 
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2dmc digital media center GmbH
 
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Daniel Rehn
 
Presentació assamblea
Presentació assamblea Presentació assamblea
Presentació assamblea
FC Barcelona
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc Quixadá
Zarathon Maia
 
Présentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tPrésentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@t
Francois Ostyn
 
Digitale Mentalität II
Digitale Mentalität IIDigitale Mentalität II
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Daniel Rehn
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Manuel Menezes de Sequeira
 
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
dbi services
 
Lean Kanban FR 2013 - Vin et kanban
Lean Kanban FR 2013 - Vin et kanbanLean Kanban FR 2013 - Vin et kanban
Lean Kanban FR 2013 - Vin et kanban
Julien Fallet
 
02.10.2011 SC B.A.T II
02.10.2011   SC B.A.T II02.10.2011   SC B.A.T II
02.10.2011 SC B.A.T II
HerdwangerSV
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
elliando dias
 
MySQL Query Optimization
MySQL Query OptimizationMySQL Query Optimization
MySQL Query Optimization
Bianca Caruso da Paixão
 
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & ShipmanDominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipmanjonesshipman
 
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung IICampus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Daniel Rehn
 
NotORM
NotORMNotORM
NotORM
Tiago Davi
 
Atelier agile 2009_09_27
Atelier agile 2009_09_27Atelier agile 2009_09_27
Atelier agile 2009_09_27domidp
 
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
Daniel Rehn
 

Destaque (20)

Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?
 
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
 
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
 
Presentació assamblea
Presentació assamblea Presentació assamblea
Presentació assamblea
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc Quixadá
 
Présentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tPrésentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@t
 
Digitale Mentalität II
Digitale Mentalität IIDigitale Mentalität II
Digitale Mentalität II
 
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
 
Lean Kanban FR 2013 - Vin et kanban
Lean Kanban FR 2013 - Vin et kanbanLean Kanban FR 2013 - Vin et kanban
Lean Kanban FR 2013 - Vin et kanban
 
02.10.2011 SC B.A.T II
02.10.2011   SC B.A.T II02.10.2011   SC B.A.T II
02.10.2011 SC B.A.T II
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
 
MySQL Query Optimization
MySQL Query OptimizationMySQL Query Optimization
MySQL Query Optimization
 
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & ShipmanDominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
 
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung IICampus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
 
Einführung in SCRUM
Einführung in SCRUMEinführung in SCRUM
Einführung in SCRUM
 
NotORM
NotORMNotORM
NotORM
 
Atelier agile 2009_09_27
Atelier agile 2009_09_27Atelier agile 2009_09_27
Atelier agile 2009_09_27
 
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
 

Semelhante a Desenvolvimento Web Avançado usando PHP

CakePHP
CakePHPCakePHP
CakePHP
elliando dias
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
Paulo César M Jeveaux
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Alexandre Tarifa
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
Cristiano Pires Martins
 
Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1
michellobo
 
Cake Php
Cake PhpCake Php
Cake Php
Laura Lopes
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Arlindo Santos
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 
Desenvolva rapidamente utilizando o framework Desenvolva rapidamente utiliz...
Desenvolva rapidamente
utilizando o framework
Desenvolva rapidamente utiliz...Desenvolva rapidamente
utilizando o framework
Desenvolva rapidamente utiliz...
Desenvolva rapidamente utilizando o framework Desenvolva rapidamente utiliz...
Renato Shirakashi
 
Criando aplicações web com tecnologias Microsoft
Criando aplicações web com tecnologias MicrosoftCriando aplicações web com tecnologias Microsoft
Criando aplicações web com tecnologias Microsoft
Fabrício Lopes Sanchez
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
Diego Tremper
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
BrunoSouza617
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
Carlos Santos
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
Diego Tremper
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
Marcus Vinicius Leandro
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
Diego Tremper
 
Primeiros passos no Vue.js
Primeiros passos no Vue.jsPrimeiros passos no Vue.js
Primeiros passos no Vue.js
Joel Rodrigues
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
Wendreo L. Fernandes
 
Mini Curso Mashup Coreu
Mini Curso Mashup CoreuMini Curso Mashup Coreu
Mini Curso Mashup Coreu
Marcelo Linhares
 

Semelhante a Desenvolvimento Web Avançado usando PHP (20)

CakePHP
CakePHPCakePHP
CakePHP
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1
 
Cake Php
Cake PhpCake Php
Cake Php
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Desenvolva rapidamente utilizando o framework Desenvolva rapidamente utiliz...
Desenvolva rapidamente
utilizando o framework
Desenvolva rapidamente utiliz...Desenvolva rapidamente
utilizando o framework
Desenvolva rapidamente utiliz...
Desenvolva rapidamente utilizando o framework Desenvolva rapidamente utiliz...
 
Criando aplicações web com tecnologias Microsoft
Criando aplicações web com tecnologias MicrosoftCriando aplicações web com tecnologias Microsoft
Criando aplicações web com tecnologias Microsoft
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Primeiros passos no Vue.js
Primeiros passos no Vue.jsPrimeiros passos no Vue.js
Primeiros passos no Vue.js
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
Mini Curso Mashup Coreu
Mini Curso Mashup CoreuMini Curso Mashup Coreu
Mini Curso Mashup Coreu
 

Mais de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
elliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
elliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
elliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
elliando dias
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
elliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
elliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
elliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
elliando dias
 
Ragel talk
Ragel talkRagel talk
Ragel talk
elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
elliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
elliando dias
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
elliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
elliando dias
 
Rango
RangoRango
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
elliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
elliando dias
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
elliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
elliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
elliando dias
 

Mais de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Desenvolvimento Web Avançado usando PHP

  • 1. Desenvolvimento Web Avançado usando PHP: conceitos básicos, perspectivas e tendências Thiago Jabur Bittar thiago@aptor.com.br 27 de Setembro de 2007
  • 2. Conceitos Básicos de PHP • PHP: quot;PHP Hypertext Preprocessorquot; • Tecnologia de código livre – Criada Rasmus Lerdorf (Dinamarca) Andi Gutmans e Zeev Suraski (Israel) • Pode ser incorporado como módulo de um servidor web – IIS e Apache (Windows e Unix) • www.php.net – informações detalhadas – manual • Linguagem interpretada
  • 3. Conceitos Básicos de PHP • Esquema conceitual de uma aplicação Web
  • 4. Conceitos Básicos de PHP • Ambiente de execução - Variáveis
  • 5. Hello World <h1>Exemplo</h1> <?php $firstvar = quot;Hello Worldquot;; echo $firstvar; ?>
  • 6. Orientação a Objetos em PHP • A palavra-chave class indica uma declaração de classe, delimitada por chaves. • Dentro da classe podemos definir – atributos (variáveis) e – métodos (funções) • Formam o estado e o comportamento do objeto. • Um método com o mesmo nome da classe é o construtor do objeto, sendo executado sempre que uma instância for criada. • A classe deve utilizar a variável $this para referenciar seus próprios métodos e atributos
  • 7. Uma classe simples class ContaCorrente { var $saldo; function ContaCorrente ($valor) { $this->saldo = $valor; } function saque ($valor) { if ($this->saldo >= $valor) $this->saldo = $valor; } function deposito ($valor) { $this->saldo += $valor; } }
  • 8. Utilizando uma classe • A definição da classe deve estar disponível no script ou página PHP que utiliza a classe – comandos include ou require • Um objeto da classe deve ser instanciado pelo operador new. • O operador -> permite referenciarmos atributos e métodos do objeto
  • 9. Utilizando a classe <?php include quot;ContaCorrente.phpquot;; $conta = new ContaCorrente (1000.0); echo (quot;Saldo inicial: { $conta->saldo }<BR/>quot;); $conta->saque (150.0); echo (quot;Novo saldo: {$conta->saldo}<BR/>quot;); ?>
  • 10. IDEs para desenvolvimento WEB • Eclipse – Vantagens: • Suporte a inúmeros plugins, inclusive de modelagem; • Independente de linguagem, ambiente único
  • 11.
  • 12. IDEs para desenvolvimento WEB • Dreamweaver - Desenvolvedor de códigos web - (.php, .asp, .js, .html, .xml, e etc) - Oferece mais auxílios para programação web do que outros ambientes - Facilidade de configuração - Integração a servidores
  • 13. Dreamweaver Definição da aplicação em que se deseja trabalhar
  • 14.
  • 15.
  • 16. IDEs para desenvolvimento WEB • Delphi for PHP – http://www.codegear.com – IDE Visual para PHP – Aumento de produtividade – Arquitetura de Componentes – Baseado em scripts e bibliotecas populares e código aberto
  • 17.
  • 18. AJAX • Asynchronous Javascript And XML – Recuperação assíncrona de dados • objeto XMLHttpRequest; – Apresentação baseada em padrões, usando XHTML e CSS; – Exposição e interação dinâmica usando o DOM; – Intercâmbio e manipulação de dados usando XML e XSLT; – JavaScript une as tecnologias.
  • 19. Frameworks Ajax • Prototype – http://www.prototypejs.org/ - Objetiva facilitar o desenvolvimento de aplicações dinâmicas na Web - manipulação de DOM - tratamento de eventos
  • 20. Frameworks Ajax Sajax • É uma ferramenta Open Source para fazer a programação Web, utilizando Ajax, o mais fácil possível • http://www.modernmethod.com/sajax/ • Possui diversos exemplos e tutoriais no próprio site
  • 21. Frameworks Ajax • Mootools – http://mootools.net/ – Escrever códigos elaborados, flexíveis e compatíveis com diversos navegadores
  • 22.
  • 23. Framework PHP • CakePHP – http://www.cakephp.org/ – http://manual.cakephp.org/ – Convenção ao invés de configuração • ao contrário de outros frameworks onde existem enormes XML de configuração de aplicativo; – Arquitetura MVC (Model, View, Controller) – Pastas da aplicação estruturadas
  • 24. Integração e intercâmbio - XML • XML (eXtensible Markup Language) – padrão da W3C para gerar linguagens de marcação para necessidades especiais – capaz de descrever diversos tipos de dados – separação do conteúdo e da formatação – legibilidade
  • 25. Folha de estilos - XSL – XSL – eXtensible Stylesheet Language • pode ser usada para transformar XML em HTML – Consiste de três métodos: • transformar documentos XML • definir partes e padrões do XML • formatar documentos XML
  • 26. SGBD MySQL • O MySQL foi criado na Suécia por David Axmark, Allan Larsson e Michael Widenius • Usa a SQL(Structured Query Language) e seus padrões • Livre para aplicativos Web • www.mysql.com • A versão mais atual é a 5.0 (há a versão Beta 5.1) • Considerado um dos SGBD mais eficientes para a Web
  • 27. SGBD MySQL Exemplo de Tabela do MySQL
  • 28. SGBD MySQL • Segue a sintaxe da SQL Ex: CREATE, DROP, INSERT, SELECT, UPDATE, etc. • Comando de criação de uma tabela de teste: CREATE TABLE pessoa( id_user INTEGER AUTO_INCREMENT, nome VARCHAR(80), telefone VARCHAR(10), PRIMARY KEY(id_user) );
  • 29. SGBD MySQL Exemplos de Comandos com MySQL: - SELECT * FROM pessoa; - SELECT nome, tel FROM pessoa; - INSERT INTO pessoa (nome, tel, cpf) VALUES (‘Andre’,’00-00001111’,’01100110188’); - UPDATE pessoa SET nome = ‘Andree’ WHERE cpf = ‘01100110188’;
  • 30. phpMyAdmin • phpMyAdmin – ferramenta desenvolvida com PHP – para o gerenciamento de banco de dados MySQL. • Sua primeira versão foi lançada em 1998 • http://www.phpmyadmin.net
  • 31.
  • 32. Modelagem de BD • DBDesigner – Criação Gráfica do Modelo Entidade Relacionamento – Geração dos comandos SQL para a criação do BD Modelado
  • 33.
  • 34. MySQL + Apache + PHP Esse três softwares livres são grandemente utilizados, pois além de gratuitos, são de alta qualidade Softwares que instalam e configuram os 3 aplicativos citados em ambiente Windows - Serv-n - VertrigoServ - também inclui o phpMyAdmin - http://vertrigo.sourceforge.net
  • 35. VertrigoServ • Facilidades para configuração do ambiente de desenvolvimento.
  • 36. Padrões Web • Procure utilizar padrões de interface Web – minimizará o tempo de desenvolvimento – ajudará a trazer maior usabilidade ao usuário – melhores práticas
  • 37. Padrões de Welie • Para design de interação Mais de 125 padrões.
  • 38. Padrão de Welie - Automotive Site
  • 39.
  • 40. Padrões Web Yahoo! http://developer.yahoo.com/ypatterns/
  • 41. Outros Padrões para Web • Designing Interfaces – Jenifer Tidwell – http://designinginterfaces.com/ • Web Patterns – UC Berkeley – http://harbinger.sims.berkeley.edu/ui_desig npatterns/webpatterns2/webpatterns/home. php • IAWiki on Website patterns – Feita por voluntários – http://www.iawiki.net/WebsitePatterns
  • 42. Dúvidas • Alguma dúvida? • E-mail: thiago@aptor.com.br • Obrigado!