Clases
Las Clases
son máximo exponente de la Programación Orientada a Objetos
(POO). PHP no es un lenguaje orientado a objeto, pero implementa las características
que permiten definir las clases.
Pero, ¿qué son las
Clases y para que sirven?. Empecemos por los segundo, sirven hacer el código
más legible, y lo que es más importante, reutilizable. Escribir
una Clase es sin duda más largo que escribir el código directamente,
pero a la larga |
|
es más rentable por su portabilidad
a otras aplicaciones y su mantenimiento.
Las Clases no son más que
una serie de variables y funciones que describen y actúan sobre
algo. Por ejemplo, vamos a crear la clase automóvil , la cual tendrá
diversas variables, $color , $modelo , $marca
, $potencia , $matricula y habrá una serie de funciones
que actuarán sobre la clase automóvil como Precio()
, Acelerar() , Frenar() , Girar() y Reparar() .
Como ejemplo vamos a crear la
clase mysql , que nos servirá para realizar consultas a las bases
de datos MySQL.
<?php
class DB_mysql
{
/* variables
de conexión */
var $BaseDatos;
var $Servidor;
var $Usuario;
var $Clave;
/* identificador
de conexión y consulta */
var $Conexion_ID
= 0;
var $Consulta_ID
= 0;
/* número
de error y texto error */
var $Errno
= 0;
var $Error
= "";
/* Método
Constructor: Cada vez que creemos una variable
de esta clase,
se ejecutará esta función */
function DB_mysql($bd
= "", $host = "localhost", $user = "nobody", $pass = "") {
$this->BaseDatos
= $bd;
$this->Servidor
= $host;
$this->Usuario
= $user;
$this->Clave
= $pass;
}
/*Conexión
a la base de datos*/
function conectar($bd,
$host, $user, $pass){
if ($bd !=
"") $this->BaseDatos = $bd;
if ($host !=
"") $this->Servidor = $host;
if ($user !=
"") $this->Usuario = $user;
if ($pass !=
"") $this->Clave = $pass;
// Conectamos
al servidor
$this->Conexion_ID
= mysql_connect($this->Servidor, $this->Usuario, $this->Clave);
if (!$this->Conexion_ID)
{
$this->Error
= "Ha fallado la conexión.";
return 0;
}
//seleccionamos
la base de datos
if (!@mysql_select_db($this->BaseDatos,
$this->Conexion_ID)) {
$this->Error
= "Imposible abrir ".$this->BaseDatos ;
return 0;
}
/* Si hemos
tenido éxito conectando devuelve
el identificador
de la conexión, sino devuelve 0 */
return $this->Conexion_ID;
}
/* Ejecuta
un consulta */
function consulta($sql
= ""){
if ($sql ==
"") {
$this->Error
= "No ha especificado una consulta SQL";
return 0;
}
//ejecutamos
la consulta
$this->Consulta_ID
= @mysql_query($sql, $this->Conexion_ID);
if (!$this->Consulta_ID)
{
$this->Errno
= mysql_errno();
$this->Error
= mysql_error();
}
/* Si hemos
tenido éxito en la consulta devuelve
el identificador
de la conexión, sino devuelve 0 */
return $this->Consulta_ID;
}
/* Devuelve
el número de campos de una consulta */
function numcampos()
{
return mysql_num_fields($this->Consulta_ID);
}
/* Devuelve
el número de registros de una consulta */
function numregistros(){
return mysql_num_rows($this->Consulta_ID);
}
/* Devuelve
el nombre de un campo de una consulta */
function nombrecampo($numcampo)
{
return mysql_field_name($this->Consulta_ID,
$numcampo);
}
/* Muestra
los datos de una consulta */
function verconsulta()
{
echo "<table
border=1>n";
// mostramos
los nombres de los campos
for ($i = 0;
$i < $this->numcampos(); $i++){
echo "<td><b>".$this->nombrecampo($i)."</b></td>n";
}
echo "</tr>n";
// mostrarmos
los registros
while ($row
= mysql_fetch_row($this->Consulta_ID)) {
echo "<tr>
n";
for ($i = 0;
$i < $this->numcampos(); $i++){
echo "<td>".$row[$i]."</td>n";
}
echo "</tr>n";
}
}
} //fin de
la Clse DB_mysql
?>
Como
habras observado, para crear una clase utilizamos la sentencia class
,
y además hemos creado una función con el mismo nombre que
la clase, a esa función se le llama constructor y se ejecutará
cada vez que definamos una variable de esa clase. No es obligatoria variables
de esa clase. No es obligatorio crear un constructor en una definición
de clase.
Otra cosa
importante en las clases es el operador
-> , con el que indicamos una variable
o |
|
método
(parte derecha del operador) de una clase (parte izquierda del operador).
Para hacer
referencia a la clase que estamos creando dentro de su definición,
debemos utilizar this .
Y ahora veamos
un ejemplo de la clase que hemos creado, y supongamos que el código
anterior lo hemos guardado en un fichero llamado clase_mysql.inc.php .
<body>
<html>
<?php
require ("clase_mysql.inc.php");
$miconexion
= new DB_mysql ;
$miconexion->conectar("mydb",
"localhost", "nobody", "");
$miconexion->consulta("SELECT
* FROM agenda");
$miconexion->verconsulta();
?>
</body>
</html>
|