Migrando para o PHP 5




      Diego Thomaz Flores
Quem?
Analista e programador PHP há 8 anos,
já desenvolveu projetos para o
Ministério do Turismo, EMBRATUR,
Fundação Getúl...
Agenda
• O que há de novo no PHP 5?

• Orientação a Objetos

• SQLite

• XML
                               Adam Trachtenb...
O que há de novo no PHP 5?
O que há de novo no PHP 5?
MySQLi
Prepared statements, transactions, subqueries e conexões SSL


SQLite
Executa manipulaçõ...
O que há de novo no PHP 5?
Exceptions
Controle de erros em tempo de execução


Streams, Filters e Wrappers
Manipulação de ...
Orientação a Objetos
Orientação a Objetos
Interfaces & Abstracts
Interfaces exigem implementação completa
Abstracts não aceitam private ou fina...
Orientação a Objetos
Encapsulamento

PHP 4: all public
PHP 5: public, protected & private



__construct() & __destruct()
...
Orientação a Objetos
__autoload()
Esqueça aquela lista imensa de includes: ao instanciar uma classe não definida, a função...
Orientação a Objetos
clone & __clone()
$obj1 = new MyClass;        $obj1 = new MyClass;
$obj1->setName(‘Diego’);    $obj1-...
Orientação a Objetos
__get() & __set()
Manipulação prévia ao definir ou capturar propriedades indefinidas ou propriedades ...
Orientação a Objetos
__call()
Executa métodos indefinidos na classe, porém definidos em objetos instanciados por ela atrav...
Orientação a Objetos
__toString()
Conversão de objetos para string


class Person {
     ...
     public function __toStri...
SQLite
SQLite
Vantagens
• Bilioteca nativa do PHP 5;

• Lê e escreve em arquivos comuns do storage;

• Além dos usuais INSERT , U...
SQLite
Desvantagens
• UPDATEs exigem que o arquivo seja travado durante sua
  execução;

• Não oferece controle de permiss...
SQLite
In-Memory Tables
Suporte ao armazenamento de tabelas na memória RAM: maior rapidez, sem persistência.



Transactio...
SQLite
UDF: User Defined Functions
Suporte a funções personalizadas para a manipulação de dados.



SELECT & INSERT
One-to...
XML
XML
DOM
Com ele, tudo é possível!



SAX
Implementação original do PHP, funciona como streamer. Usa menos memória que o DO...
XML
Xpath
Extensão para pesquisas SQL-like



XSLT
XML para HTML? Ele é o cara!
XML
Instalando os suportes a XML e XSLT

libxml2 >= 2.5.10
libxslt >= 1.0.18
DOM
• É a única forma de ler XML em árvore de elementos;

• No PHP 4, o DOM era experimental; dessa forma, exige
  reescri...
DOM
$dom = new DOMDocument;

$dom->loadXML(‘<xml>Eu sou um XML</xml>’);      // Carrega o XML de uma string dada

$dom->lo...
SimpleXML
• Transforma os elementos de um XML em propriedades de
  objetos;

• Atribui o conteúdo textual de cada elemento...
SimpleXML
$xml = simplexml_load_string(‘<xml>Eu sou um XML</xml>’);
$xml = simplexml_load_file(‘my_file.xml’);

...

echo ...
SimpleXML + DOM
DOM para SimpleXML

$dom = new DOMDocument;
$dom->load(‘my_file.xml’);
$simpleXML = simplexml_import_dom($...
XPath
$dom = new DOMDocument;
$dom->load(‘my_file.xml’);

$xpath = new DOMXPath($dom);
$attribute = $xpath->query(‘/my_xml...
Obrigado!
diegotf@gmail.com
Próximos SlideShares
Carregando em…5
×

Migrando para o PHP 5

1.807 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.807
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

×