Upgrade to Pro — share decks privately, control downloads, hide ads and more …

O Fim dos Arrays: Explorando Collections e Estruturas de Dados em PHP

O Fim dos Arrays: Explorando Collections e Estruturas de Dados em PHP

O array é uma estrutura de dados flexível porém insuficiente (e às vezes ineficiente) para a representação do domínio de uma aplicação. Essa palestra explorará o poder das collections e estruturas de dados em PHP apresentando a SPL e a biblioteca DS. Serão abordadas Interfaces, Iterators, Lists, Double Linked Lists, Stacks, Queues, Maps, Sets e Heaps com exemplos de aplicações reais e mostrando seus prós e contras. Compreender o funcionamento das Collections e estruturas de dados melhorará o seu mindset e te ajudará a tomar uma melhor decisão durante o processo de modelagem de sua aplicação.

Marcos Felipe

March 06, 2018
Tweet

More Decks by Marcos Felipe

Other Decks in Programming

Transcript

  1. SPL Standard PHP Library • Interfaces • Iterators • Data

    structures • Exceptions • Functions https://php.net/spl
  2. IteratorAggregate ➔ Objeto possui um iterador ➔ Não é um

    iterador ➔ Separe o objeto da lógica do iterator
  3. SPL - Iterators • AppendIterator • ArrayIterator • CachingIterator •

    CallbackFilterIterator • DirectoryIterator • EmptyIterator • FilesystemIterator • FilterIterator • GlobIterator • InfiniteIterator • IteratorIterator • LimitIterator • MultipleIterator • NoRewindIterator • ParentIterator • RecursiveArrayIterator • RecursiveCachingIterator • RecursiveCallbackFilterIterator • RecursiveDirectoryIterator • RecursiveFilterIterator • RecursiveIteratorIterator • RecursiveRegexIterator • RecursiveTreeIterator • RegexIterator
  4. ➔ Filtrar todos os arquivos MP3 e JPG; ➔ Filtrar

    todos os JPG que são maiores que 1mb; ➔ Não filtrar todos; ➔ Procurar nos subdiretórios.
  5. Map

  6. Set

  7. In the real world Laravel • SplFileInfo Symfony • SplFileInfo

    • SplFileObject • SplObjectStorage • SplPriorityQueue Zend • SplObjectStorage • SplStack • SplFileInfo • SplPriorityQueue • SplFixedArray
  8. ✘ Conheça o tipo do seu dado; ✘ Estrutura de

    dados são quase sempre alternativas para arrays; ✘ Não use SplStack/SplQueue para leitura aleatória; ✘ Não use SplFixedArray quando precisar de aumento de performance; ✘ Performance não precisa ser sua prioridade. Dicas