migrando para o php 5

30
Migrando para o PHP 5 Diego Thomaz Flores

Upload: ecrayon-tecnologia-criativa

Post on 27-May-2015

1.655 views

Category:

Technology


80 download

DESCRIPTION

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.

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]