• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
PHP - Programação para seres humanos
 

PHP - Programação para seres humanos

on

  • 2,967 views

Uma introdução ao PHP.

Uma introdução ao PHP.

An introductory presentation about the PHP language and platform.

Statistics

Views

Total Views
2,967
Views on SlideShare
2,934
Embed Views
33

Actions

Likes
2
Downloads
91
Comments
1

5 Embeds 33

http://www.slideshare.net 12
http://www.linkedin.com 8
http://www.caikesouza.com 6
https://www.linkedin.com 4
http://caikesouza.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    PHP - Programação para seres humanos PHP - Programação para seres humanos Presentation Transcript

    • PHP: Programação para Seres Humanos Carlos Henrique R. de Souza XX.Sepai.Belém.PA Outubro de 2006
    • Agenda Objetivo  Paradigmas  A Web  O que é PHP / PHP­CLI / PHP­GTK  Características / Fatos  Primeiros passos  IDE   Orientação a Objetos  Frameworks  CMS  Segurança  Conclusões 
    • Objetivo Desenvolvimento em PHP  Iniciantes em PHP  Iniciantes em outras linguagens  Alunos de cursos técnicos  / graduaçao em TI  Entusiastas  Quando usá­lo  Quando não usá­lo  
    • Paradigmas Client­Side   Vantagens:  Alicerce robusto  Controle sobre os recursos  Liberdade local  Desvantagens:  Desenvolvimento ‘do zero’  Liberdade local  Bugfix 
    • Paradigmas Server­Side 
    • Paradigmas Server­Side   Vantagens:  Interface pré­modelada  Maior acessibilidade  Bugfix  Desvantagens:  Pouca (quase nenhuma) informação sobre cliente  Preocupação com tráfego  Popularização no desenvolvimento de aplicações 
    • A Web Total Sites Across All Domains August 1995 ­ October 2006  Em novembro de 1992 – 26 servidores web fonte: netcraft  Em outubro de 2006 – 98 milhões de ‘hostnames’  “A internet náo é uma rede de computadores, mas sim de pessoas”
    • O que é PHP ? Uma linguagem de programação open­  source e de propósitos­gerais Criada por Rasmus Lerdof em 1995 (PHP/FI)  Reescrita por Andi Gtmans e Zeev Suraszi   (Zend) em 1997 – PHP3 Utilizada especialmente para   desenvolvimento web (procedural e/ou OO) Misturada com HTML  TODO código PHP é interpretado no servidor 
    • O que é PHP ? arquivo.php (no servidor)  <html> <p><b><? echo “Olá, Mundo!” ?></b></p> </html> arquivo.php (no cliente)  <html> <p><b>Olá, Mundo!</b></p> </html>
    • O que é PHP ? PHP­CLI  Command Line Interpreter  Uso similar a bash, perl, awk  Client­Side  Cron tasks  #!/usr/bin/php –q <? echo “PHP aqui também!”; ?>
    • O que é PHP ? PHP­GTK  Gimp Tool Kit  Bibliotecas escritas em C  Client/Server­Side  Cross­platform 
    • Características Independente de Plataforma  Linux, HP­UX, Mac OS X, Win32 (NT/W95/W98/W2000),   BeOS, Solaris Servidores  Apache, MS­IIS / PWS, Xitami  Suporte nativo a diversos SGBDs  Adabas D, dBase, Empress, FilePro (apenas leitura),   Hyperware, IBM DB2, Informix, Ingres, Interbase,  FrontBase, mSQL, Direct MS­SQL, MySQL, ODBC, Oracle  (OCI7 e OCI8), Ovrimos, PostgreSQL, SQLite, Solid,  Sybase, Velocis, Unix dbm
    • Características Extensões:  GD (imagens), LDAP, SNMP, SOAP, IMAP, FTP,   MCAL, IMSP, Java, Curl, gettext, SWF, CCVS,  zlib, etc...
    • Características Tipagem dinâmica (‘duck’ typing) e   conversão automática If ( funcao_foo($arg_foo) ) { ... fazer algo ... } Funções suficientes! tipo int ou String 
    • Características Integração com outras linguagens  (Java, Perl, MS.net , etc.)  public class JavaPHP {     private String nome = null;     public void setNome(String nome) {         this.nome = nome;     }     public String getNome() {         return nome;     } } <? $javaPHP = new Java('JavaPHP'); $javaPHP->setNome(quot;Java+PHPquot;); echo quot;Método do Java = quot; . $javaPHP->getNome(); ?> ex: PHPBrasil
    • Características Sintaxe simples, semelhante a Perl e C  Perl: $conn = Pg::connectdb(quot;dbname=foo host=localhost user=root password=123quot;); PHP: $conn = pg_connect(quot;host=localhost dbname=foo user=root password=123quot;) Otimizadores  APC, Zend Optimizer, Turck MMCache 
    • Características Arrays  Ordenados  <?  $vetor[0] = “primeiro”; $vetor[1] = “segundo”; $vetor[] = “terceiro”;  ?> Associativos  <?  $vetor[‘caike’] = “php”; $vetor[‘jamesgoslin’] = “java”; $vetor[‘joselito’] = “asp”;  ?> 48 funções para array 
    • Fatos 19.491.324 Domains  1.313.977 IP Addresses  fonte: netcraft
    • Fatos “Top 10 Programming Languages” fonte: tiobe
    • Fatos fonte: nexen
    • Primeiros Passos Opção 1: LAMP  Linux com APT­GET  apt­get install apache2 php5 mysql­server php5­mysql   mysql­query­browser Compilações e instalações independentes  Opção 2: WAMP  EasyPHP (7.7mb)  Instalações independentes 
    • IDEs Open­Source:  Eclipse (PHPEclipse, PHP­IDE), Tulip,   PHPDesigner Proprietárias:  Zend Studio, Dreamweaver 
    • Orientação a Objetos Inspiraçao no mundo real  Introduzida no PHP 3  Reescrita para o PHP 4, mas ainda   insuficiente PHP5 = OO madura e similar a outras   linguagens
    • Orientação a Objetos construtores e destrutores padrão  class BD{ var $conn; function __construct($host, $user, $pw){ $this­>conn = mysql_connect($host,$user,$pw); } function __destruct($host, $user, $pass){ mysql_close($this­>conn) ; } }
    • Orientação a Objetos modificadores de acesso  public  private  protected  class Funcionario {  public $nome; protected $telefone; private $salario; } 
    • Orientação a Objetos __set(), __get(), __call()  class Pessoa {   private $dt_nascimento;   function __set($atributo, $valor){     if($atributo == quot;dt_nascimentoquot;){    $dt_nascimento = implode(quot;­quot;,array_reverse(explode(quot;/quot;,$valor))); }     } } $p1 = new Pessoa(); $p1­>dt_nascimento = quot;03/09/1984quot;; // ... dt_nascimento = 1984­09­03
    • Orientação a Objetos __set(), __get(), __call()  class Conta {   private $saldo;   private $limite = 100;   function setSaldo() ...   function __get($at){    if($at == “saldo”) return $this­>saldo + $this­>limite;   } } $p1 = new Conta(); $p1­>setSaldo(200); echo $p1­>saldo; // 300
    • Orientação a Objetos __set(), __get(), __call()  class Guitarra {   private $cordas;   private $captadores;   function __call($metodo, $args){    echo quot;@#&!! $metodo não existe para a classe guitarra !quot;;   } } $a = new Guitarra(); $a­>tocarUmPagodao();
    • Orientação a Objetos interfaces  interface IPessoa{ function fazerObrigacoes(); function seDivertir(); }
    • Orientação a Objetos interfaces  class Garoto implements IPessoa{ private $obrigacoes = false; function fazerObrigacoes(){ echo “Fazer meu dever de casa”; $this­>obrigacoes = true; } function seDivertir(){ echo “Jogar playstation”; } function getObrigacoes(){ return $this­>obrigacoes; } }
    • Orientação a Objetos interfaces  class Adulto implements IPessoa{ private $obrigacoes = false; function fazerObrigacoes(){ echo “Trabalhar para pagar o PS do meu filho”;  $this­>obrigacoes = true; } function seDivertir(){ echo “Verei o Papão jogar!”; } function getObrigacoes(){ return $this­>obrigacoes; } }
    • Orientação a Objetos interfaces  class Deus{ function julgar(IPessoa $p){ if(!$p­>getObrigacoes()){ echo “Faça já suas obrigações!”; $p­>fazerObrigacoes(); } $p­>setDivertir(); } }
    • Orientação a Objetos interfaces  $objPessoa1 = new Garoto(); Deus::julgar($objPessoa); Fazer meu dever de casa Jogar playstation $objPessoa2 = new Adulto(); Deus::julgar($objPessoa2); Trabalhar para pagar o PS do meu filho Verei o Papão jogar
    • Orientação a Objetos classes e métodos abstratos  propriedades estáticas  clonagem  manipulação de erros (try/catch) 
    • Frameworks Genial, ClassGenerator, MetaClass, Smarty,   PRADO, CakePHP, Symfony, etc. “ Não reinvente a roda, mas saiba como ela   foi feita ”
    • Content Management System (CMS) Portais:  Joomla, Mambo, PHP­Nuke, etc ...  Blogs:  Wordpress, simplog  eCommerce:  phpShop, XT­Commerce  GroupWare:  NetOffice, PHPGroupWare 
    • Segurança SQLInjection  XSS  Engenharia Social  
    • SQL Injection Manipulação dos scripts SQL  $sql= “... WHERE nome = `$_POST[`nome`]` AND senha = ‘$_POST[`senha`]`”; Login: bla’ or 1 = 1 – Senha: 123 $sql =  “... WHERE nome = ‘bla’ or 1 =1 ­­ ` AND senha = ‘123`”; Sempre validar entrada, SEMPRE! 
    • SQL Injection Ajudam a evitar ataques de SQLInjection:  addslashes  mysql_real_escape_string  magic_quotes 
    • Cross-Site Scripting (XSS) Informação de um contexto (não­confiável) é inserida   em outro contexto Link em um e­mail: Fotos daquela sua amiga na festa  <a href =  quot;http://xpto.com/?param=<script>...</script>”> Fotos daquela sua amiga na festa </a> <a href = “http://tinyurl.com/y6tz8”> Fotos daquela sua amiga na festa </a>
    • Cross-Site Scripting (XSS) Ajudam a evitar ataques de XSS  strip_tags  htmlentities  Sempre validar entrada e SAÍDA! 
    • Engenharia Social Independente de tecnologia  Caso Paris Hilton  Caso Harvard Business School  “ Não existe patch para falha humana...” 
    • Conclusões PHP – programação para seres­humanos e   situações humanas no planeta Terra ! “ Quando tudo que se tem é um martelo... ” 
    • Fim Referências  www.php.net  www.netcraft.com  www.opensourcecms.com  www.nexen.net  www.tiobe.com  http://ref.web.cern.ch/ref/CERN/CNL/2001/001/www­history/  Contato  carloshrsouza@equilibriumweb.com  www.equilibriumweb.com  www.step2rock.com  Grupo  phppaidegua­subscribe@yahoogroups.com 