Migrando para o PHP 5

1.824 visualizações

Publicada em

Além do suporte à orientação a objetos o PHP 5 conta com uma série de funcionalidades e bibliotecas nativas que facilitam e otimizam o desenvolvimento de aplicações de médio e grande porte. Porém, às vesperas do lançamento da versão 5.3 do PHP, muitos profissionais ainda desconhecem as grandes vantagens dos releases 5.x da linguagem e, muitas vezes, mantém seus códigos estruturados para a versão 4.x.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.824
No SlideShare
0
A partir de incorporações
0
Número de incorporações
48
Ações
Compartilhamentos
0
Downloads
27
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Migrando para o PHP 5

  1. 1. Migrando para o PHP 5 Diego Thomaz Flores
  2. 2. Quem? Analista e programador PHP há 8 anos, já desenvolveu projetos para o Ministério do Turismo, EMBRATUR, Fundação Getúlio Vargas, Telefonica e Agência Click e Folha de São Paulo. É Gerente de Projetos na 3YZ Performance Digital, em Porto Alegre, agência especializada em marketing e posicionamento online de marcas. É responsável pela ECRAYON Tecnologia Criativa, estúdio de desenvolvimento de sistemas web-based.
  3. 3. Agenda • O que há de novo no PHP 5? • Orientação a Objetos • SQLite • XML Adam Trachtenberg
  4. 4. O que há de novo no PHP 5?
  5. 5. O que há de novo no PHP 5? MySQLi Prepared statements, transactions, subqueries e conexões SSL SQLite Executa manipulações SQL em arquivos de texto, sem a necessidade de instalação de um servidor de banco de dados XML DOM, XSLT, SimpleXML e SAX Iterators e SPL Navegação simples para objetos, diretórios, DB resources e documentos XML além de filters, limiters, caching e modificadores especializados
  6. 6. O que há de novo no PHP 5? Exceptions Controle de erros em tempo de execução Streams, Filters e Wrappers Manipulação de comunicação de dados entre diversos protocolos SOAP, Tidy e Reflection Criação de webservices, validação HTML e XHTML e introspecção de código
  7. 7. Orientação a Objetos
  8. 8. Orientação a Objetos Interfaces & Abstracts Interfaces exigem implementação completa Abstracts não aceitam private ou final Type Hinting public function setAddress(Person $objPerson) { ... }
  9. 9. Orientação a Objetos Encapsulamento PHP 4: all public PHP 5: public, protected & private __construct() & __destruct() Controle de instanciamento e deleção de objetos e referências
  10. 10. Orientação a Objetos __autoload() Esqueça aquela lista imensa de includes: ao instanciar uma classe não definida, a função __autoload() é chamada. function __autoload($package_name) { $folders = split(‘_’,$package_name); $path = join(DIRECTORY_SEPARATOR, $folders) . ‘.php’; include $path; }
  11. 11. Orientação a Objetos clone & __clone() $obj1 = new MyClass; $obj1 = new MyClass; $obj1->setName(‘Diego’); $obj1->setName(‘Diego’); $obj2 = $obj1; $obj2 = clone $obj1; $obj2->setName(‘Thomaz’); $obj2->setName(‘Thomaz’); echo $obj1->getName(); echo $obj1->getName(); Thomaz Diego
  12. 12. Orientação a Objetos __get() & __set() Manipulação prévia ao definir ou capturar propriedades indefinidas ou propriedades não- públicas agregadas dentro da classe. class Person { private $data; public function __get($property) { return (isset($this->data[$property]) ? $this->data[$property] : false); } public function __set($property, $value) { $this->data[$property] = $value; } }
  13. 13. Orientação a Objetos __call() Executa métodos indefinidos na classe, porém definidos em objetos instanciados por ela através de agregação. Com isso, heranças múltiplas são resolvidas por simulação. class Person { protected $address; ... public function __call($method, $args) { if(method_exists($this->address, $method) { return call_user_func_array( array($this->address,$method), $args); } } }
  14. 14. Orientação a Objetos __toString() Conversão de objetos para string class Person { ... public function __toString() { return “$this->name <$this->email>”; } } $objPerson = new Person; echo $objPerson; Diego Flores <diegotf@gmail.com>
  15. 15. SQLite
  16. 16. SQLite Vantagens • Bilioteca nativa do PHP 5; • Lê e escreve em arquivos comuns do storage; • Além dos usuais INSERT , UPDATE e SELECT permite ainda transactions, subselect, trigger e UDF; • Maior rapidez na manipulação de dados, especialmente durante SELECTs
  17. 17. SQLite Desvantagens • UPDATEs exigem que o arquivo seja travado durante sua execução; • Não oferece controle de permissões GRANT & REVOKE; • Não é indicado para sistemas com grande tráfego de dados.
  18. 18. SQLite In-Memory Tables Suporte ao armazenamento de tabelas na memória RAM: maior rapidez, sem persistência. Transactions Garantia de consistência na execução de queries múltiplas. $sql = ‘BEGIN;’; foreach($person as $user) { $sql .= “INSERT INTO users VALUES(‘${user[0]}’,’${user[1]}’);”; } $sql .= ‘COMMIT;’; // Use COMMIT para executar os comandos e ROLLBACK para cancelá-los sqlite_query($sql);
  19. 19. SQLite UDF: User Defined Functions Suporte a funções personalizadas para a manipulação de dados. SELECT & INSERT One-to-one: para um dado valor, um único retorno. GROUP BY & ORDER BY Many-to-one: para um conjunto de valores, um retorno consolidado. sqlite_create_function($db, ‘db_func_name’, ‘php_func_name’, 1);
  20. 20. XML
  21. 21. XML DOM Com ele, tudo é possível! SAX Implementação original do PHP, funciona como streamer. Usa menos memória que o DOM, mas exige códigos mais complexos. SimpleXML O paraíso do RSS, REST e dados de configuração.
  22. 22. XML Xpath Extensão para pesquisas SQL-like XSLT XML para HTML? Ele é o cara!
  23. 23. XML Instalando os suportes a XML e XSLT libxml2 >= 2.5.10 libxslt >= 1.0.18
  24. 24. DOM • É a única forma de ler XML em árvore de elementos; • No PHP 4, o DOM era experimental; dessa forma, exige reescrita dos códigos em PHP 5; • Organiza o XML em DOMElements, chamados nodes; • Nodes são como objetos de um XML; o conteúdo de texto de cada node é apenas uma de suas propriedades.
  25. 25. DOM $dom = new DOMDocument; $dom->loadXML(‘<xml>Eu sou um XML</xml>’); // Carrega o XML de uma string dada $dom->load(‘my_file.xml’); // Carrega o XML de um arquivo externo $root = $dom->documentElement; foreach($root->childNodes as $myNode) { $this->doSomething( $myNode->nodeValue ); } $dom->save(‘my_new_file.xml’); // Salva o XML em um arquivo externo echo $dom->saveXML(); // Retorna o XML como string
  26. 26. SimpleXML • Transforma os elementos de um XML em propriedades de objetos; • Atribui o conteúdo textual de cada elemento como valor da propriedade; • Elementos com nomes iguais são agrupados em listas; • Atributos de um elemento são armazenados em array.
  27. 27. SimpleXML $xml = simplexml_load_string(‘<xml>Eu sou um XML</xml>’); $xml = simplexml_load_file(‘my_file.xml’); ... echo $xml->asXML(); // Transforma o objeto SimpleXML em string XML $xml->asXML(‘my_new_file.xml’); // Salva o objeto SimpleXML em um arquivo XML externo ou echo $xml->my_node->my_child_node->asXML();
  28. 28. SimpleXML + DOM DOM para SimpleXML $dom = new DOMDocument; $dom->load(‘my_file.xml’); $simpleXML = simplexml_import_dom($dom); SimpleXML para DOM $simpleXML = simplexml_load_file(‘my_file.xml’); $dom = dom_import_simplexml($simpleXML);
  29. 29. XPath $dom = new DOMDocument; $dom->load(‘my_file.xml’); $xpath = new DOMXPath($dom); $attribute = $xpath->query(‘/my_xml/my_node/my_attribute’); $simpleXML = simplexml_load_file(‘my_file.xml’); $node = $simpleXML->xpath (‘/my_xml/my_node’); foreach($node as $attributes) { ... }
  30. 30. Obrigado! diegotf@gmail.com

×