Standard PHP Library (SPL)

Standard PHP Library (SPL) é uma coleção de interfaces, classes e funções, que oferecem soluções para alguns problemas comuns, além disso, permite que os desenvolvedores trabalhem de maneira padronizada, aproveitando funcionalidades internas da linguagem, por exemplo, criar objetos que são capazes de trabalhar como um array ou ser percorrido através do construtor foreach().

Neste artigo vamos conhecer alguns recursos oferecidos pela SPL, mas o objetivo principal será apresentar os tipos de recursos e possibilidades que estes oferecem, apontando locais para aprofundar o conhecimento sobre o que está sendo abordado.

Os recursos do SPL estão habilitados por padrão e disponível na maioria das versões do PHP 5, entretanto, devido ao alto número de adições no decorrer das versões lançadas, recomendo sempre verificar quais recursos estão disponíveis para versão que você estiver utilizando.

Datastructures

Uma estrutura de dados (Em inglês: data structure) é um modelo lógico para organizar informações. SPL fornece um conjunto de estruturas de dados, a diferença entre essas estruturas é a implementação de seu algoritmo subjacente. As estruturas de dados são inerentemente independentes da linguagem e existem como um conjunto de conceitos lógicos baseados na matemática, utilizando algoritmos diferentes, conforme apropriado para maximizar a eficiência.

Para que utilizar arrays se não precisamos de todos os recursos oferecidos por eles em determinadas situações? Esse deve ser o questionamento ao utilizar datastructures disponíveis pela SPL.

Datastructure Descrição
SplDoublyLinkedList Lista duplamente ligada
SplStack Implementação do algoritmo de uma pilha
SplQueue Implementação do algoritmo de uma fila
SplHeap Classe abstrata para organização de uma lista
SplMaxHeap Organiza do maior para o menor
SplMinHeap Organiza do menor para o maior
SplPriorityQueue Fila com prioridade
SplFixedArray Array de tamanho fixo
SplObjectStorage Set / Map de objetos

Recomendação: http://www.slideshare.net/felipernb/spl-datastructures

Exemplos: http://www.alberton.info/php_5.3_spl_data_structures.html

Interfaces

Interface é um conjunto de métodos que determinado objeto deve suportar, um objeto pode implementar várias interfaces. No PHP contamos com algumas interfaces pré-definidas e outras oferecidas pela SPL, essas interfaces permitem que nossos objetos aproveitem funcionalidades e padrões internos da linguagem, também podemos criar nossas próprias interfaces, mas neste artigo iremos focar apenas nas interfaces que já estão disponíveis no PHP.

Algumas interfaces disponíveis no PHP:

Interface Descrição
Countable Interface para “contar” objetos utilizando a função count()
Serializable Interface para serialização customizada
ArrayAccess Interface para acessar objetos como arrays
Iterator Interface para iterar objetos internamente

Confira todas as interfaces pré-definidas e interfaces oferecidas pela SPL

Iterators

Um iterator é um objeto que percorre uma estrutura, como um array. Existem diferentes tipos de iterators para lidar com diferentes tipos de dados, cada iterator possui uma interface padrão, que possibilita um acesso padronizado para determinados tipos de dados.

Confira todos iterators oferecidos pela SPL

Exceptions

A manipulação de exceções não é uma novidade, mas recentemente foram adicionados dois novos recursos interessantes, aninhamento de exceções e o novo conjunto de tipos de exceção oferecidos pela SPL.

Aninhamento (Em inglês: nesting) de exceções é a habilidade de capturar uma determinada exceção e criar um objeto de nova exceção a ser lançada com uma referência para a exceção original, possibilitando o resgate da exceção original através do método getPrevious().

Foram adicionadas 13 novas exceções na SPL, duas dessas podem ser consideradas exceções base, LogicException e RuntimeException, ambas estendem a classe Exception. O objetivo dessa adição é simples, facilitar o entendimento do código.

Recomendação: http://ralphschindler.com/2010/09/15/exception-best-practices-in-php-5-3

SPL Functions

SPL oferece algumas funções que podem ser úteis dependendo de cada situação, confira algumas dessas funções.

Função Descrição
spl_autoload_register Registra a função dada como implementação de __autoload()
class_implements Retorna as interfaces que são implementadas pela classe
class_parents Retorna as classes pai de determinada classe
spl_classes Retorna as classes da SPL disponíveis

Confira todas as funções oferecidas pela SPL

File Handling

Atualmente na SPL contamos com as classes SplFileInfo, SplFileObject e SplTempFileObject que facilitam o resgate de informações de arquivos, diretórios, etc.

Confira mais informações sobre as classes para manipulação de arquivo

ArrayObject e Padrão de Projeto Observer

Além dos recursos que foram apresentados acima, SPL oferece a classe ArrayObject uma versão orientada a objetos de um array e duas interfaces que buscam facilitar a implementação do padrão de projeto Observer, que são SplSubject e SplObserver.

Recomendação ArrayObject: Trabalhando com ArrayObject no PHP

Recomendação Observer: Implementando o padrão de projeto Observer

Confira mais informações sobre esses recursos

Estudando SPL para certificação

Caso você esteja estudando este tema focando tirar sua certificação, recomendo que procure entender o que cada recurso oferece, no meu exame encontrei algumas questões sobre SPL, todas testavam apenas conhecimento teórico, mas como são questões dinâmicas, se tiver tempo, implemente alguns exemplos.

Referência(s)

http://php.net/manual/pt_BR/book.spl.php

http://www.php.net/~helly/php/ext/spl/

http://www.slideshare.net/tobias382/new-spl-features-in-php-53

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados *