migrando para o php 5

Post on 27-May-2015

1.655 Views

Category:

Technology

80 Downloads

Preview:

Click to see full reader

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

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

• XMLAdam Trachtenberg

O que há de novo no 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

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

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

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;

}

}

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

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

XML

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.

XML

XpathExtensão para pesquisas SQL-like

XSLTXML para HTML? Ele é o cara!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;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’);$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!Obrigado!

diegotf@gmail.com

top related