Transcript
Page 1: Migrando para o PHP 5

Migrando para o PHP 5

Diego Thomaz Flores

Page 2: Migrando para o PHP 5

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 É 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.

Page 3: Migrando para o PHP 5

Agenda

• O que há de novo no PHP 5?

• Orientação a Objetos

• SQLite

• XMLAdam Trachtenberg

Page 4: Migrando para o PHP 5

O que há de novo no PHP 5?

Page 5: Migrando para o PHP 5

O que há de novo no PHP 5?

MySQLiPrepared statements, transactions, subqueries e conexões SSL

SQLiteExecuta manipulações SQL em arquivos de texto, sem a necessidade de instalação de um servidor Executa manipulações SQL em arquivos de texto, sem a necessidade de instalação de um servidor de banco de dados

XMLDOM, XSLT, SimpleXML e SAX

Iterators e SPLNavegação simples para objetos, diretórios, DB resources e documentos XML além de filters, limiters, caching e modificadores especializados

Page 6: Migrando para o PHP 5

O que há de novo no PHP 5?

ExceptionsControle de erros em tempo de execução

Streams, Filters e WrappersManipulação de comunicação de dados entre diversos protocolosManipulação de comunicação de dados entre diversos protocolos

SOAP, Tidy e ReflectionCriação de webservices, validação HTML e XHTML e introspecção de código

Page 7: Migrando para o PHP 5

Orientação a Objetos

Page 8: Migrando para o PHP 5

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) {

...

}

Page 9: Migrando para o PHP 5

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

Page 10: Migrando para o PHP 5

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) {function __autoload($package_name) {

$folders = split(‘_’,$package_name);

$path = join(DIRECTORY_SEPARATOR, $folders) . ‘.php’;

include $path;

}

Page 11: Migrando para o PHP 5

Orientação a Objetos

clone & __clone()

$obj1 = new MyClass;

$obj1->setName(‘Diego’);

$obj1 = new MyClass;

$obj1->setName(‘Diego’);

$obj2 = $obj1;

$obj2->setName(‘Thomaz’);

echo $obj1->getName();

Thomaz

$obj2 = clone $obj1;

$obj2->setName(‘Thomaz’);

echo $obj1->getName();

Diego

Page 12: Migrando para o PHP 5

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;private $data;

public function __get($property) {

return (isset($this->data[$property]) ? $this->data[$property] : false);

}

public function __set($property, $value) {

$this->data[$property] = $value;

}

}

Page 13: Migrando para o PHP 5

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);

}

}

}

Page 14: Migrando para o PHP 5

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 <[email protected]>

Page 15: Migrando para o PHP 5

SQLite

Page 16: Migrando para o PHP 5

SQLite

Vantagens

• Bilioteca nativa do PHP 5;

• Lê e escreve em arquivos comuns do storage;• 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

Page 17: Migrando para o PHP 5

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.

Page 18: Migrando para o PHP 5

SQLite

In-Memory TablesSuporte ao armazenamento de tabelas na memória RAM: maior rapidez, sem persistência.

TransactionsGarantia de consistência na execução de queries múltiplas.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);

Page 19: Migrando para o PHP 5

SQLite

UDF: User Defined FunctionsSuporte a funções personalizadas para a manipulação de dados.

SELECT & INSERT

One-to-one: para um dado valor, um único retorno.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);

Page 20: Migrando para o PHP 5

XML

Page 21: Migrando para o PHP 5

XML

DOMCom ele, tudo é possível!

SAXImplementação original do PHP, funciona como streamer. Usa menos memória que o DOM, mas Implementação original do PHP, funciona como streamer. Usa menos memória que o DOM, mas exige códigos mais complexos.

SimpleXMLO paraíso do RSS, REST e dados de configuração.

Page 22: Migrando para o PHP 5

XML

XpathExtensão para pesquisas SQL-like

XSLTXML para HTML? Ele é o cara!XML para HTML? Ele é o cara!

Page 23: Migrando para o PHP 5

XML

Instalando os suportes a XML e XSLT

libxml2 >= 2.5.10

libxslt >= 1.0.18

Page 24: Migrando para o PHP 5

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.

Page 25: Migrando para o PHP 5

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

Page 26: Migrando para o PHP 5

SimpleXML

• Transforma os elementos de um XML em propriedades de

objetos;

• Atribui o conteúdo textual de cada elemento como valor da

propriedade;propriedade;

• Elementos com nomes iguais são agrupados em listas;

• Atributos de um elemento são armazenados em array.

Page 27: Migrando para o PHP 5

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();

Page 28: Migrando para o PHP 5

SimpleXML + DOM

DOM para SimpleXML

$dom = new DOMDocument;

$dom->load(‘my_file.xml’);$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);

Page 29: Migrando para o PHP 5

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) {

...

}

Page 30: Migrando para o PHP 5

Obrigado!Obrigado!

[email protected]


Top Related