migrando para o php 5
Post on 27-May-2015
1.655 Views
Preview:
DESCRIPTION
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