====== 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:
* ''void rewind()'', colocar el índice al principio.
* ''current()'', devuelve el objeto actual.
* ''key()'', retorna la clave de la posición actual.
* ''void next()'', coloca el índice en la posición siguiente.
* ''bool valid()'', retorna true/false según si quedan más objetos por recorrer.
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:
* ''fopen'' abre un fichero. Parámetros: 1. Dirección del fichero; 2. Permisos. Retorna el puntero del fichero. Los permisos:
* ''r'' abre el fichero en modo sólo lectura.
* ''r+'' abre el fichero en modo lectura-escritura.
* ''w'' abre el fichero en modo escritura. Si el fichero no existe se crea, si existe se elimina su contenido.
* ''w+'' abre el fichero en modo lectura-escritura. Si el fichero no existe se crea, si existe se elimina su contenido.
* ''a'' abre el fichero en modo escritura, pero coloca el puntero del fichero al final de este. Si el fichero no existe se crea.
* ''a+'' abre el fichero en modo lectura-escritura, colaca el puntero del fichero al final de este. Si el fichero no existe se crea.
* ''b'' abre el fichero en modo binario. En sistemas Linux esto no tiene efecto ya que no se diferencias ficheros binarios\texto, en cambio en Windows es necesario.
* ''fread'' lee un bloque de datos de un fichero y lo retorna. Parámetros: 1. Puntero del fichero; 2. Bytes que leerá.
* ''fgets'' lee una línea de un fichero y la retorna. Parámetros: 1. Puntero del fichero.
* ''fwrite'' y ''fputs'' escriben un bloque de datos en un fichero. Parámetros: 1. Puntero del fichero; 2: Datos a escribir.
* ''fclose'' cierra el fichero. Parámetros: 1. Puntero del fichero.
* ''feof'' devuelve true cuando se ha llegado al final de un fichero. Parámetros: 1. Puntero del fichero.
//Ejemplo sencillo: //
$file = fopen('hola.txt', 'r');
while (!feof($file)) {
print fgets($file) . "
";
}
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 ====
* ''ulink'' recibe como parámetro el nombre de un fichero. Eliminará este.
* ''rename'' recibe como parámetro dos nombres, el primero será un nombre de archivo el cual cambiará por el segundo.
* Funciones para comprobar el estado de un fichero:
* ''file_exists'' se le pasa por parámetro el nombre del fichero e indica si este existe.
* ''is_file'', ''is_link'' o ''is_dir'' devuelven true si el fichero indicado es lo que preguntamos si es.
* Funciones para trato con directorios:
* ''getcwd'' devuelve el directorio actual.
* ''chdir'' se le pasa un string que corresponde al directorio actual por el que cambiará.
* ''disk_total_space'' devuelve el tamaño total en bytes de la partición donde está contenida el directorio que se le pasa por parámetro.
* ''diskfreespace'' o ''disk_free_space'' reciben como parámetro una dirección de directorio y devuelven, en bytes, el tamaño libre de la partición donde se encuentra.
* ''scandir'' se le pasa un nombre de directorio y devuelve los archivos contenidos en él.
* Puedes iterar sobre los archivos de un directorio con las funciones ''opendir'', ''readdir'', ''rewinddir'' y ''closedir''.
* Existe una clase denominada ''dir'' que te permiterealizar las tareas comunes sobre un directorio utilizando la poo.
* Funciones para volcar el contenido de un fichero:
* ''file'' se le pasa por parámetro el nombre de un fichero y devuelve el contenido de este en una matriz.
* ''file_get_contents'' devuelve el contenido de un fichero en un string.
* Ficheros temporales:
* ''tmpfile'' no recibe parámetros pero devuelve el puntero a un archivo creado con nombre aleatorio, cuando este se cierre será borrado.
* ''tempnam'' pasandole el directorio escogido y la extensión se crea un archivo con nombre aleatorio, este no está abierto y la función devuelve su nombre. Se aconseja ubicarlo en una ruta donde se borre automáticamente al cabo del tiempo o borrarlo manualmente al final del script\rutina.
===== 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 ====
* [[fw:others:cake|CakePHP]]