Tabla de Contenidos

Xtra PHP

Iteradores

Para poder crear una clase que almacene una colección de objetos, o simplemente para que pueda recorrerse con un foreach deberemos heredar de la interface Iterator, esta nos obliga a implementar los siguientes métodos:

class NumberSquared implements Iterator {
    private $start, $end;
    private $cur;
 
    public function __construct($start, $end) {
        $this->start = $start;
        $this->end = $end;
    }
    public function rewind() {
        $this->cur = $this->start;
    }
    public function key() {
        return $this->cur;
    }
    public function current() {
        return pow($this->cur, 2);
    }
    public function next() {
        $this->cur++;
    }
    public function valid() {
        return $this->cur <= $this->end;
    }
}

Existe otra interface llamada IteratorAggregate, esta te obliga a implementar el método getIterator que ha de devolver una instancia de un objeto que implemente Iterator. De esa forma, a todo objeto que implemente IteratorAggregate puedes sacarle un iterador que lo recorra.

Ficheros

Ficheros

Las funciones para el acceso a ficheros son:

Ejemplo sencillo:

$file = fopen('hola.txt', 'r');
while (!feof($file)) {
  print fgets($file) . "<br />";
}
fclose($file);

Copia fichero hola.txt en adios.txt:

$file1 = fopen('hola.txt', 'r');
$file2 = fopen('adios.txt', 'w');
while (!feof($file1)) 
  fwrite($file2, fgets($file1));
fclose($file1);
fclose($file2);

Acciones en el sistema de archivos

Flujos de datos (streams)

Bases de datos

SQLite

MySQL

:!: Consultar el último id: msyql_insert_id();

XML

Expresiones Regulares

Sockets

Seguridad

Notas

Como...

Recoger el contenido de una página externa

$str = file_get_contents($url);

Convertir una cadena a utf-8

$str = utf8_decode($str);

Frameworks