SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
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ú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.
Agenda
• O que há de novo no PHP 5?

• Orientação a Objetos

• SQLite

• XML
                               Adam Trachtenberg
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çõ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
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
Orientação a Objetos
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) {
    ...
}
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
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;
}
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
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;
    }
}
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);
         }
     }
}
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>
SQLite
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
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.
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);
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);
XML
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.
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
  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.
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
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.
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();
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);
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) {
    ...
}
Obrigado!
diegotf@gmail.com

Contenu connexe

Tendances

PDO: TRABALHANDO COM BANCO DO JEITO CERTO
PDO: TRABALHANDO COM BANCO DO JEITO CERTOPDO: TRABALHANDO COM BANCO DO JEITO CERTO
PDO: TRABALHANDO COM BANCO DO JEITO CERTOPerla Coutinho Barbosa
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkMarcelo Rodrigo
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMFábio Rehm
 
Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Sérgio Lima
 
Aula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIAula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIinfo_cimol
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioVitor Silva
 
Orientação a Objetos em PHP
Orientação a Objetos em PHPOrientação a Objetos em PHP
Orientação a Objetos em PHPzehzinho
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIinfo_cimol
 
PHP robusto com Zend Framework
PHP robusto com Zend FrameworkPHP robusto com Zend Framework
PHP robusto com Zend FrameworkJaime Neto
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBCEduardo Mendes
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPGuilherme Blanco
 

Tendances (19)

JasperReports
JasperReportsJasperReports
JasperReports
 
Modulo 15 PSI
Modulo 15 PSIModulo 15 PSI
Modulo 15 PSI
 
Palestra de PDO
Palestra de PDOPalestra de PDO
Palestra de PDO
 
PDO: TRABALHANDO COM BANCO DO JEITO CERTO
PDO: TRABALHANDO COM BANCO DO JEITO CERTOPDO: TRABALHANDO COM BANCO DO JEITO CERTO
PDO: TRABALHANDO COM BANCO DO JEITO CERTO
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Anotações do mapeamento OR
Anotações do mapeamento ORAnotações do mapeamento OR
Anotações do mapeamento OR
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORM
 
Psi m14
Psi m14Psi m14
Psi m14
 
JDBC
JDBCJDBC
JDBC
 
Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7
 
Aula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIAula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites II
 
Banco de Dados - Android
Banco de Dados - AndroidBanco de Dados - Android
Banco de Dados - Android
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual Studio
 
Orientação a Objetos em PHP
Orientação a Objetos em PHPOrientação a Objetos em PHP
Orientação a Objetos em PHP
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites II
 
PHP robusto com Zend Framework
PHP robusto com Zend FrameworkPHP robusto com Zend Framework
PHP robusto com Zend Framework
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBC
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHP
 

En vedette

Processo de Testes de Vulnerabilidades em Componentes MVC para CMS Joomla
Processo de Testes de Vulnerabilidades em Componentes MVC para CMS JoomlaProcesso de Testes de Vulnerabilidades em Componentes MVC para CMS Joomla
Processo de Testes de Vulnerabilidades em Componentes MVC para CMS JoomlaJúlio Coutinho
 
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 20173 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017Drift
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheLeslie Samuel
 

En vedette (6)

Publica! CMS
Publica! CMSPublica! CMS
Publica! CMS
 
Clusterização de Aplicações PHP
Clusterização de Aplicações PHPClusterização de Aplicações PHP
Clusterização de Aplicações PHP
 
Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008
 
Processo de Testes de Vulnerabilidades em Componentes MVC para CMS Joomla
Processo de Testes de Vulnerabilidades em Componentes MVC para CMS JoomlaProcesso de Testes de Vulnerabilidades em Componentes MVC para CMS Joomla
Processo de Testes de Vulnerabilidades em Componentes MVC para CMS Joomla
 
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 20173 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 

Similaire à Migrando para o PHP 5

Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineOtávio Calaça Xavier
 
PHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e ObjetosPHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e ObjetosGeorge Mendonça
 
PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7iMasters
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX Sérgio Souza Costa
 
VRaptor - Alta produtividade no Desenvolvimento Web em Java
VRaptor - Alta produtividade no Desenvolvimento Web em JavaVRaptor - Alta produtividade no Desenvolvimento Web em Java
VRaptor - Alta produtividade no Desenvolvimento Web em JavaDaniel Faria Gomes
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraFlávio Lisboa
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - BrazilStephen Chin
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5garux
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009silva.edgar
 
jQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê FajolijQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê FajoliCaue Fajoli
 

Similaire à Migrando para o PHP 5 (20)

Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP Doctrine
 
PHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e ObjetosPHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e Objetos
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
Doctrine for Dummies
Doctrine for DummiesDoctrine for Dummies
Doctrine for Dummies
 
PHP 7
PHP 7PHP 7
PHP 7
 
PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
Php
PhpPhp
Php
 
VRaptor - Alta produtividade no Desenvolvimento Web em Java
VRaptor - Alta produtividade no Desenvolvimento Web em JavaVRaptor - Alta produtividade no Desenvolvimento Web em Java
VRaptor - Alta produtividade no Desenvolvimento Web em Java
 
Php FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHPPhp FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHP
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
 
PHP MySQL Aula 07
PHP MySQL Aula 07PHP MySQL Aula 07
PHP MySQL Aula 07
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009
 
Aula5
Aula5Aula5
Aula5
 
jQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê FajolijQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê Fajoli
 

Migrando para o PHP 5

  • 1. Migrando para o PHP 5 Diego Thomaz Flores
  • 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. Agenda • O que há de novo no PHP 5? • Orientação a Objetos • SQLite • XML Adam Trachtenberg
  • 4. O que há de novo no PHP 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. 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
  • 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. 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. 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. 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. 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. 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. 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>
  • 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. 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. 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. 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. XML
  • 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. XML Xpath Extensão para pesquisas SQL-like XSLT XML para HTML? Ele é o cara!
  • 23. XML Instalando os suportes a XML e XSLT libxml2 >= 2.5.10 libxslt >= 1.0.18
  • 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. 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. 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. 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. 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. 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) { ... }