SPL

1,579 views

Published on

Standard PHP Library

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,579
On SlideShare
0
From Embeds
0
Number of Embeds
27
Actions
Shares
0
Downloads
33
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

SPL

  1. 1. SPL Standard PHP Library 23:49
  2. 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. 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. 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. 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. 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. 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. 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. 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. 10. Funções ● spl_autoload* – PHP 5 >= 5.1.2 – Incrementa a funcionalidade da __autoload Anderson Casimiro SPL – Standard PHP Library 23:49
  11. 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. 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. 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. 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. 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. 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. 17. Classes ● Classes – CachingIterator – FilterIterator – RecursiveCachingIterator – LimitIterator – DirectoryIterator – ParentIterator – RecursiveDirectoryIterator – SimpleXMLIterator – RecursiveIteratorIterator – ArrayIterator – ArrayObject Anderson Casimiro SPL – Standard PHP Library 23:49
  18. 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. 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. 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. 21. Classes ● RecursiveDirectoryIterator – Versão recursiva de DirectoryIterator – Cada elemento é instância de RecursiveDirectoryIterator Anderson Casimiro SPL – Standard PHP Library 23:49
  22. 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. 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. 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. 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. 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. 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. 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. 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. 30. Interfaces ● Interfaces – Iterator – SplObject – RecursiveIterator – SplObserver * – OuterIterator – SeekableIterator – Countable – Transversable * Ainda não documentado Anderson Casimiro SPL – Standard PHP Library 23:49
  31. 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. 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. 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. 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. 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. 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. 37. Aplicações ? Anderson Casimiro SPL – Standard PHP Library 23:49
  38. 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. 39. Contato ● Anderson [at] duodraco.com ● [blog.]duodraco.com ● www.ophpen.org [em breve] Anderson Casimiro SPL – Standard PHP Library 23:49

×