Biblioteca estándar de PHP
La
Biblioteca Estándar de PHP (BEP) (o en inglés Standar PHP library,
SPL) es una colección de interfaces y clases pensadas para resolver
problemas comunes.
Los
programadores que vienen de Java o de C# estarán acostumbrados a
usar muchas clases que vienen incorporadas en todo el marco de
trabajo del respectivo lenguaje. Esto algunas veces provoca disgustos
al iniciarse en PHP porque no se encuentran las facilidades que se
brindan en esos lenguajes.
A partir de
la versión 5 de PHP, se añadieron algunas clases e interfaces que
solucionan problemas comunes y se adecuan al paradigma orientado a
objetos que muchos programadores están acostumbrados a trabajar. La
SPL contiene un número de clases destinadas sobretodo a estrucuras
de datos y al manejo de archivos.
Estructuras de datos
La
principal fortaleza de la SPL son las estructuras de datos que
brinda. Claro está que todas estas estructuras están en otros
lenguajes. Espero que sea de utilidad y pueda aprovechar estas
características de PHP.
Básicamente las estructuras
de datos se agrupan en 4 bloques:
- Listas doblemente enlazadas.
- Arreglos.
- Mapas.
- Montículos.
Listas doblemente enlazadas
La primer
clase que veremos es la SplDoublyLinkedList.
Esta clase es una lista doblemente enlazada. Es equivalente a una
java.util.LinkedList en
Java o bien a una System.Collections.Generic.LinkedList
en C#.
A continuación se muestra
un ejemplo de cómo crear una lista e insertar números enteros:
<?php
$lista
= new SplDoublyLinkedList();
$lista->push(1);
$lista->push(2);
$lista->push(3);
$lista->push(4);
foreach($lista
as $l){
echo
$l;
}
?>
La salida del código
anterior será:
1234
Cabe aclarar
que el método push puede recibir cualquier tipo de datos y no
solamente enteros, incluso puede recibir objetos.
Otro método
para insertar datos a la lista es el método add(index,
new_val) que recibe el índice y el valor. El índice indica
la posición en la cual se va a insertar. Si el índice está fuera
de rango se lanzará una OutOfRangeException
o cuando index no pueda ser analizado como un entero. Hay que tener
cuidado con este método ya que está disponible a partir de la
versión 5.5 de PHP mientras que, en general, el resto está
disponible desde la versión 5.3. Más adelante encontrará una tabla
con información detallada de los métodos.
Ejemplo:
$lista
= new SplDoublyLinkedList();
$lista->add(0,
70);
$lista->add(1,
80);
$lista->add(2,
90);
foreach($lista
as $l){
echo
$l;
}
La salida del código
anterior será:
708090
Interfaz
Countable
Esta
interfaz tiene un método llamado count()
que retorna la cantidad de elementos que contiene una estructura sea
cual sea. La clase SplDoublyLinkedList
implementa esta interfaz por lo que obligatoriamente tiene una
implementación del método count(),
la cual justamente, retorna la cantidad de elementos que existe en la
lista. Además, existe una función llamada count(),
muy usada para obtener la longitud de los arreglos. Dicha función
también puede ser usada en todos aquellos objetos que implementen la
interfaz Countable. Por
ejemplo:
<?php
$lista
= new SplDoublyLinkedList();
$lista->push(1);
$lista->push(2);
$lista->push(3);
echo
count($lista); // Resultado
3.
echo
$lista->count(); //
Resultado
3.
?>
Pila
Una pila es
una estructura de datos de tipo LIFO (Last In, First Out), es decir,
lo que ingresa al último es lo primero que sale. La
SplDoublyLinkedList
proporciona métodos que permiten simular que se está trabajando con
una pila (en inglés stack), sin embargo, sigue siendo una lista
enlazada.
Estos
métodos son: void push(mixed)
y mixed pop(void).
El primero de ellos inserta en la pila y el segundo saca el que está
encima de la pila. Si lo que se necesita es sacar el que está encima
de la pila pero luego devolverlo, osea simplemente verlo, se puede
usar el método top().
Si uno
quiere crear explícitamente una pila entonces puede hacer uso de la
clase SplStack que
extiende a la SplDoublyLinkedList
y hereda todos sus métodos.
Cola
De la misma
forma que existe una pila, existe una cola. Una cola es una
estructura de datos de tipo FIFO (First In, First Out), es decir, lo
que ingresa primero es lo primero que sale. Se puede hacer uso de la
clase SplQueue que
extiende a la SplDoublyLinkedList
y hereda todos sus métodos y a su vez añade algunos otros. Los dos
más importantes son:
void
enqueue(mixed
$value): Agrega un elemento a la cola.
mixed
dequeue(void):
Saca el elemento de la cola.
Ejemplo:
<?php
$lista
= new SplQueue();
$lista->enqueue(1);
$lista->enqueue(2);
$lista->enqueue(3);
$lista->enqueue(4);
$lista->dequeue();
foreach($lista
as $l){
echo
$l;
}
?>
Tabla de métodos.
Método
|
Versión
|
Descripción
corta
|
public void add( mixed $index, mixed
$newval )
|
5.5.0
|
Agrega un elemento en una
posición determinada.
|
public void push(mixed $newval )
|
5.3.0
|
Agrega un elemento al final de la lista.
|
public void unshift(mixed $newval )
|
5.3.0
|
Agrega un elemento al inicio de la lista.
|
public mixed bottom( void )
|
5.3.0
|
Obtiene el primer elemento. No lo borra de la
lista.
|
public mixed top( void )
|
5.3.0
|
Obtiene el último elemento. No lo borra de la
lista.
|
public int count( void )
|
5.3.0
|
Retorna la cantidad de elementos.
|
public bool isEmpty( void )
|
5.3.0
|
Indica si la lista está vacía.
|
public mixed shift( void )
|
5.3.0
|
Extrae el elemento inicial de la lista. Sí lo
borra de la lista.
|
public mixed pop( void )
|
5.3.0
|
Extrae el elemento final de la lista. Sí lo borra
de la lista.
|
* Estos
no son todos los métodos, para consultarlos todos puede dirigirse a:
http://php.net/manual/es/class.spldoublylinkedlist.php
Bibliografía
http://php.net/manual/es/book.spl.php
No hay comentarios:
Publicar un comentario