SPL
        Standard PHP Library




23:49
Conteúdo
        ●   Apresentação
        ●   PHP 5
        ●   SPL
        ●   Funções
        ●   Classes
        ●   In...
Apresentação
        ●   Anderson “Duodraco” Casimiro
        ●   Zend Certified Engineer – PHP5
        ●   Atuante há ma...
PHP 5
        ●   Implementou novo modelo OO
            –   Interfaces
            –   Métodos mágicos
                 ●...
PHP 5
        ●   SimpleXML
            –   Interface OO para obter informações de XML
            –   Suporta Xpath
     ...
PHP 5
        ●   PDO
            –   PHP Data Objects
            –   Interface unificada para manipulação de BD
        ...
SPL
        ●   SPL
            –   Standard PHP Library
            –   Objetivo: Solucionar problemas
            –   Fu...
SPL
        ●   Requisitos
            –   Compilado por default desde PHP 5.0.0
            –   A partir de 5.3, não pode...
Funções
        –   spl_autoload                       –   class_implements
        –   spl_autoload_call                 ...
Funções
        ●   spl_autoload*
            –   PHP 5 >= 5.1.2
            –   Incrementa a funcionalidade da __autoload...
Funções
        ●   spl_autoload_register
            –   Registra uma função para ser usada como
                __autolo...
Funções
        function ModelLoader($className){
            require_once 'Model/'.$className.'.class.php';
        }
   ...
Funções
        ●   spl_autoload_call
            –   Força a execução de spl_autoload
        ●   spl_autoload_extensions...
Funções
        ●   class_implements
            –   Retorna as interfaces de uma dada classe
        ●   class_parents
  ...
Adendo
        ●   Iterator
            –   “Um iterator, em programação de computadores,
                permite a quot;i...
Funções
        ●   iterator_count
            –   Retorna o número de elementos de uma
                implementação de I...
Classes
        ●   Classes
            –   CachingIterator                        –    FilterIterator
            –   Rec...
Classes
        ●   CachingIterator, Recursive CachingIterator
            –   Wrapper de Iterator
            –   Provê i...
Classes
        ●   DirectoryIterator
            –   Iterador de Diretório
            –   Métodos de Informação
        ...
Classes
        ●   DirectoryIterator                     –   int getPerms()
                                             ...
Classes
        ●   RecursiveDirectoryIterator
            –   Versão recursiva de DirectoryIterator
            –   Cada ...
Classes
        ●   RecursiveIteratorIterator
            –   Itera sobre Iteradores Recursivos


        foreach(
       ...
Classes
        ●   FilterIterator (abstract)
            –   Iterator que retorna somente elementos aceitos
            –...
Classes
        ●   LimitIterator
            –   Implementação de Iterator que opera sobre um
                determinado...
Classes
        ●   ParentIterator (PHP5 > 5.1)
            –   Implementação de Iterator que opera somente
              ...
Classes
        ●   SimpleXMLIterator
            –   Iterator que opera sobre um XML
            –   Elementos operam com...
Classes
        ●   ArrayIterator
            –   Classe para operar sobre Arrays
                 ●   Iteração, busca, or...
Classes
        ●   ArrayIterator                           –   natcasesort ()
            –   append ($value)            ...
Classes
        ●   ArrayObject
            –   Wrapper de arrays
            –   Possibilita a iteração recursiva
       ...
Interfaces
        ●   Interfaces
            –   Iterator                             –   SplObject
            –   Recur...
Aplicações
        ●   PDO – PHP Data Object
            –   PDOStatement, resultado de PDO::query e
                PDO::...
Aplicações
                              RAM
        Iteração                                Iteração




                ...
Aplicações
        ●   Estruturas com listas melhor administráveis
        ●   Melhor interface de iteração em diretórios
...
Conclusão
        ●   A SPL, por manter seu conjunto de interfaces
            bem definidas, torna mais fácil o trabalho ...
Conclusão
        ●   Em casos como a PDO, além dos ganhos
            com desenvolvimento, há também o ganho
            ...
Conclusão
        ●   A SPL, introduz ferramentas que aumentam a
            produtividade, pela facilidade de uso e
     ...
Aplicações




         ?
             Anderson Casimiro
         SPL – Standard PHP Library
23:49
Referências
        ●   docs.php.net/spl
        ●   www.php.net/~helly/php/ext/spl/
        ●   pt.wikipedia.org
        ...
Contato
        ●   Anderson [at] duodraco.com
        ●   [blog.]duodraco.com
        ●   www.ophpen.org [em breve]




 ...
Upcoming SlideShare
Loading in...5
×

SPL

1,427

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,427
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
32
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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×