|
Las clases
Las Clases son máximo exponente de la Programación Orientada a Objetos
(POO). PHP no es un lenguaje orientad 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 habreis 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 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>
|