SPL
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,377
On Slideshare
2,355
From Embeds
22
Number of Embeds
5

Actions

Shares
Downloads
31
Comments
0
Likes
2

Embeds 22

http://www.alunos.org 8
http://duodraco 5
http://www.slideshare.net 4
http://www.linkedin.com 4
https://www.linkedin.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. SPL Standard PHP Library 23:49
  • 2. Conteúdo ● Apresentação ● PHP 5 ● SPL ● Funções ● Classes ● Interfaces ● Aplicações ● Conclusão Anderson Casimiro SPL – Standard PHP Library 23:49
  • 3. Apresentação ● Anderson “Duodraco” Casimiro ● Zend Certified Engineer – PHP5 ● Atuante há mais de 6 anos com PHP – ColdFusion, Mysql, Oracle, SqlServer, DB2 ● Desenvolvimento, engenharia, coordenação – Saúde, RH, Varejo, Transito e Publicidade ● Atuando na Gráficos Burti ● PHP-SP, Ophpen Anderson Casimiro SPL – Standard PHP Library 23:49
  • 4. PHP 5 ● Implementou novo modelo OO – Interfaces – Métodos mágicos ● __ → get, set, isset,destruct, call, toString, ... – Visibilidade → public, private, protected – Final, abstract, static, ... ● Novas funcionalidades OO – SimpleXML, PDO, SOAP, SCA ... Anderson Casimiro SPL – Standard PHP Library 23:49
  • 5. PHP 5 ● SimpleXML – Interface OO para obter informações de XML – Suporta Xpath – Importa objetos DomDocument Anderson Casimiro SPL – Standard PHP Library 23:49
  • 6. PHP 5 ● PDO – PHP Data Objects – Interface unificada para manipulação de BD – Orientado a Objetos – Exceptions – Menor carga do servidor Anderson Casimiro SPL – Standard PHP Library 23:49
  • 7. SPL ● SPL – Standard PHP Library – Objetivo: Solucionar problemas – Funções, Classes e Interfaces – Complementam o modelo OO do PHP5 – Já implementado em alguns recursos ● SimpleXML, PDO, ... Anderson Casimiro SPL – Standard PHP Library 23:49
  • 8. SPL ● Requisitos – Compilado por default desde PHP 5.0.0 – A partir de 5.3, não pode ser desabilitada Anderson Casimiro SPL – Standard PHP Library 23:49
  • 9. Funções – spl_autoload – class_implements – spl_autoload_call – class_parents – spl_autoload_extensions – iterator_count – spl_autoload_functions – iterator_to_array – spl_autoload_register – spl_classes – spl_autoload_unregister – spl_object_hash Anderson Casimiro SPL – Standard PHP Library 23:49
  • 10. Funções ● spl_autoload* – PHP 5 >= 5.1.2 – Incrementa a funcionalidade da __autoload Anderson Casimiro SPL – Standard PHP Library 23:49
  • 11. Funções ● spl_autoload_register – Registra uma função para ser usada como __autoload – Se chamada sem parâmetros, chama spl_autoload, buscando arquivos no include_path como “{$classe}.php” ou “{$classe}.inc” – Pode usar métodos estáticos ● spl_autoload_unregister – Retira uma função da lista de implementações de __autoload Anderson Casimiro SPL – Standard PHP Library 23:49
  • 12. Funções function ModelLoader($className){ require_once 'Model/'.$className.'.class.php'; } class Helper{ static function loader($c){ require 'helpers/'.$c.'.inc'; } } spl_autoload_register('ModelLoader'); spl_autoload_register('Helper::loader'); $controller = new Controller; HTML::form($url); Anderson Casimiro SPL – Standard PHP Library 23:49
  • 13. Funções ● spl_autoload_call – Força a execução de spl_autoload ● spl_autoload_extensions – Modifica e retorna as extensões padrão que spl_autoload busca (default: .php e .inc) ● spl_autoload_functions – Retorna um array com as funções registradas ● spl_autoload – Chamada se houver algum spl_autoload_register Anderson Casimiro SPL – Standard PHP Library 23:49
  • 14. Funções ● class_implements – Retorna as interfaces de uma dada classe ● class_parents – Retorna as classes parent de uma dada classe ● spl_object_hash (PHP5 >= 5.2) – Retorna um id único para um objeto ● spl_classes – Retorna as classes definidas na SPL Anderson Casimiro SPL – Standard PHP Library 23:49
  • 15. Adendo ● Iterator – “Um iterator, em programação de computadores, permite a quot;iteraçãoquot; e um modo de acesso a elementos de um agregado de objetos, sequencialmente, sem exposição de estruturas internas.” – “Um exemplo: Considere uma lista simplesmente encadeada. Um iterador deve permitir o acesso a todos os elementos da lista de uma forma segura sem que ocorra perda de informação ou modificações não permitidas.” Anderson Casimiro SPL – Standard PHP Library 23:49
  • 16. Funções ● iterator_count – Retorna o número de elementos de uma implementação de Iterator – Ex.: número de elementos em uma query PDO ● iterator_to_array – Retorna um array simples, a partir de uma implementação de iterator Anderson Casimiro SPL – Standard PHP Library 23:49
  • 17. Classes ● Classes – CachingIterator – FilterIterator – RecursiveCachingIterator – LimitIterator – DirectoryIterator – ParentIterator – RecursiveDirectoryIterator – SimpleXMLIterator – RecursiveIteratorIterator – ArrayIterator – ArrayObject Anderson Casimiro SPL – Standard PHP Library 23:49
  • 18. Classes ● CachingIterator, Recursive CachingIterator – Wrapper de Iterator – Provê iteração em cache sobre outro Iterator – Por default retorna __toString de cada elemento CachingIterator::__construct( Iterator $it, $flags = self::CALL_TOSTRING ) Anderson Casimiro SPL – Standard PHP Library 23:49
  • 19. Classes ● DirectoryIterator – Iterador de Diretório – Métodos de Informação – Cada elemento é instância de SplFileInfo foreach(new DirectoryIterator('/tmp') as $each){ if(!$each->isDot()) {print_r($each);} } Anderson Casimiro SPL – Standard PHP Library 23:49
  • 20. Classes ● DirectoryIterator – int getPerms() – int getSize() – int getATime() – string getType() – int getCTime() – bool isDir() – string getFilename() – bool isDot() – int getGroup() – bool isExecutable() – int getInode() – bool isFile() – int getMTime() – bool isLink() – int getOwner() – bool isReadable() – string getPath() – bool isWritable() – string getPathname() Anderson Casimiro SPL – Standard PHP Library 23:49
  • 21. Classes ● RecursiveDirectoryIterator – Versão recursiva de DirectoryIterator – Cada elemento é instância de RecursiveDirectoryIterator Anderson Casimiro SPL – Standard PHP Library 23:49
  • 22. Classes ● RecursiveIteratorIterator – Itera sobre Iteradores Recursivos foreach( new RecursiveIteratorIterator($iterator) as $i ){ print_r($i); } Anderson Casimiro SPL – Standard PHP Library 23:49
  • 23. Classes ● FilterIterator (abstract) – Iterator que retorna somente elementos aceitos – Necessária implementação do método accept() ● Sobre $this->it->current(); – A iteração percorre Elementos que fizerem accept() retornar true Anderson Casimiro SPL – Standard PHP Library 23:49
  • 24. Classes ● LimitIterator – Implementação de Iterator que opera sobre um determinado range $li = new LimitIterator($iterator,$offset,$count); Anderson Casimiro SPL – Standard PHP Library 23:49
  • 25. Classes ● ParentIterator (PHP5 > 5.1) – Implementação de Iterator que opera somente sobre elementos que possuem elementos filhos class ParentIterator extends FilterIterator{ ... function accept(){ return $this->it->hasChildren(); } } Anderson Casimiro SPL – Standard PHP Library 23:49
  • 26. Classes ● SimpleXMLIterator – Iterator que opera sobre um XML – Elementos operam como SimpleXMLElement – Recursivo $xml = file_get_contents(quot;contatos.xmlquot;); foreach (new SimpleXMLIterator($dados) as $contato){ echo($contato->nome . quot;<br />quot;); } Anderson Casimiro SPL – Standard PHP Library 23:49
  • 27. Classes ● ArrayIterator – Classe para operar sobre Arrays ● Iteração, busca, ordenação, adição e exclusão de elementos. $ai = new ArrayIterator($array, ArrayIterator::ARRAY_AS_PROPS || ArrayIterator::STD_PROP_LIST ); Anderson Casimiro SPL – Standard PHP Library 23:49
  • 28. Classes ● ArrayIterator – natcasesort () – append ($value) – natsort () – asort () – next () – count () – offsetExists ($index) – getArrayCopy () – offsetGet ($index) – getFlags () – offsetSet ($i,$val) – ksort () – offsetUnset ($index) – uasort (function) – rewind () – uksort (function) – setFlags ($flags) Anderson Casimiro SPL – Standard PHP Library 23:49
  • 29. Classes ● ArrayObject – Wrapper de arrays – Possibilita a iteração recursiva – Possibilita iterar sobre propriedades de objetos – Além dos métodos de ArrayIterator implementa getIterator() Anderson Casimiro SPL – Standard PHP Library 23:49
  • 30. Interfaces ● Interfaces – Iterator – SplObject – RecursiveIterator – SplObserver * – OuterIterator – SeekableIterator – Countable – Transversable * Ainda não documentado Anderson Casimiro SPL – Standard PHP Library 23:49
  • 31. Aplicações ● PDO – PHP Data Object – PDOStatement, resultado de PDO::query e PDO::prepare é iterável – Consome menos recursos – Geralmente mais rápido que as funções nativas ● ~90% mais eficaz – Itera sobre o 'resultset' sem buffer ● A cada iteração obtem um novo registro Anderson Casimiro SPL – Standard PHP Library 23:49
  • 32. Aplicações RAM Iteração Iteração Demanda memória Iteração (PDO, SPL Iterator) Anderson Casimiro SPL – Standard PHP Library 23:49
  • 33. Aplicações ● Estruturas com listas melhor administráveis ● Melhor interface de iteração em diretórios ● spl_autoload facilita muito a vida na busca de arquivos para uso de classes ● Exceptions Específicas Anderson Casimiro SPL – Standard PHP Library 23:49
  • 34. Conclusão ● A SPL, por manter seu conjunto de interfaces bem definidas, torna mais fácil o trabalho de manipular diferentes estruturas de dados e implementar Design Patterns ● Com as funções de autoload o trabalho de resolver diretórios fica bem simples e organizado ● Com os problemas se resumindo, passamos menos tempo digitando a solução. Anderson Casimiro SPL – Standard PHP Library 23:49
  • 35. Conclusão ● Em casos como a PDO, além dos ganhos com desenvolvimento, há também o ganho com performance, não tão visível em benchmarks de 1 máquina, mas em ambientes de produção, com muitos usuários obtendo grandes resultsets a carga de memória cai, e muito. – Resultado também sensível em DirectoryIterators Anderson Casimiro SPL – Standard PHP Library 23:49
  • 36. Conclusão ● A SPL, introduz ferramentas que aumentam a produtividade, pela facilidade de uso e implementação, além de aumentar a performance de aplicativos com seus recursos e ter permitido o desenvolvimento de funcionalidades que se utilizam desses poderosos recursos Anderson Casimiro SPL – Standard PHP Library 23:49
  • 37. Aplicações ? Anderson Casimiro SPL – Standard PHP Library 23:49
  • 38. Referências ● docs.php.net/spl ● www.php.net/~helly/php/ext/spl/ ● pt.wikipedia.org ● Enterprise PHP Management Magazine – Gauthier Delamarre, Guillaume Ponçon Anderson Casimiro SPL – Standard PHP Library 23:49
  • 39. Contato ● Anderson [at] duodraco.com ● [blog.]duodraco.com ● www.ophpen.org [em breve] Anderson Casimiro SPL – Standard PHP Library 23:49