Programación con PHP 5 – 2.5.6 El tipo Resource

El objetivo de tener un tipo resource es poder tener valores (diferenciables unos de otros) que identifiquen la interacción de nuestra aplicación con otro tipo de software o hacia el mundo exterior.

Cuando se quiere interactuar con una BD, cada acción que realicemos hacia ella tendra asociada un valor que será de tipo resource, por ejemplo cada extensión de BD tiene como mínimo una función para conectar con la BD, una función para enviar una consulta a la BD y una función para cerrar la conexión con la BD. Debido a que puedes tener múltiples conexiones abiertas al mismo tiempo,la función connect te proveera algo que te permitirá identificar esa conexión cuando llames a las funciones query y close : ese algo será un recurso (o un handle).

Internamente los recursos son valores enteros. El beneficio principal es que estos recursos tienen cuidado de administrar por si mismos la memoria. Cuando la ultima referencia a un recurso es retirada, la extensión que creo el recurso es llamada para liberar memoria, cerrar conexiones, etc, …, para dicho recurso.

$res = database_connect(  );   // función ficticia de conexión a una BD
database_query($res);
$res = "boo";                // conexión a una base de datos cerrada automáticamente

Esta limpieza automática es vista mejor dentro de una función, cuando el recurso es asignado a una variable local. Cuando la función finaliza el valor de la variable es reclamado por PHP.

function search (  ) {
      $res = database_connect(  );
      database_query($res);
}

Cuando no hay más referencias al recurso, este es automáticamente dado de baja.
La mayoría de extensiones proveen una función específica para dar de baja o para cerrar, es considerado un buen estilo llamar a la función explícitamente en vez de confiar en el alcance de la variable o en el lanzamiento de un limpiador de recursos.

Usa la función is_resource para testear cuando un valor es un recurso :

if (is_resource($x)) {
        // $x is a resource
    }
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s