Programar con clases en PHP
La programación orientada a objetos es una metodología de programación avanzada y bastante extendida, en la que los sistemas se modelan creando clases, que son un conjunto de datos y funcionalidades. Las clases son definiciones, a partir de las que se crean objetos. Los objetos son ejemplares de una clase determinada y como tal, disponen de los datos y funcionalidades definidos en la clase.
La programación orientada a objetos permite concebir los programas de una manera bastante intuitiva y cercana a la realidad. La tendencia es que un mayor número de lenguajes de programación adopten la programación orientada a objetos como paradigma para modelizar los sistemas. Prueba de ello es la nueva versión de PHP (5), que implanta la programación de objetos como metodología de desarrollo.
Así pues, la programación orientada a objetos es un tema de gran interés, pues es muy utilizada y cada vez resulta más esencial para poder desarrollar en casi cualquier lenguaje moderno. En este artículo vamos ver algunas nociones sobre la programación orientada a objetos en PHP.
Una clase es un conjunto de variables, llamados atributos, y funciones, llamadas métodos, que trabajan sobre esas variables. Las clases son, al fin y al cabo, una definición: una especificación de propiedades y funcionalidades de elementos que van a participar en nuestros programas.
Por ejemplo, la clase «User» tendría como atributos características como el nombre, el apellido, el email y cosas semejantes. Las funciones o métodos que podríamos incorporar a la clase «user» son las funcionalidades que deseamos que realice el usuario o retornar información de sus atributos.
Vamos a ver como se declararía una clase en PHP mediante un ejemplo:
class User {
private $user_id;
private $name;
private $lastname;
private $email;
private $password;
private $type;
private $date_add;
public function __construct($user_id = '') {
global $conexion;
$this->user_id = $user_id;
$query = mysql_query("SELECT * FROM users WHERE user_id = '" . $user_id . "'", $conexion);
if (mysql_num_rows($query) > 0) {
$row = mysql_fetch_array($query);
$this->name = $row['name'];
$this->lastname = $row['lastname'];
$this->email = $row['email'];
$this->password = $row['password'];
$this->type = $row['type'];
$this->date_add = $row['date_add'];
}
}
...
}
En el código anterior hemos delcarado una clase llamada «User» que guardaremos en un archivo «user.php» por ejemplo para requerirla después donde se necesite en nuestra Web.
Declaramos sus atributos como privados para utilizar después sus métodos getters y setters para retornar su valor o modificarlos.
Y si nos fijamos también estamos viendo una función especial «__construct()» que se trata del constructor de la clase al cual le estamos pasando la id del usuario a instanciar que probablemente recogeremos por variable de sesión.
Previamente deberemos haber realizado la conexión con la base de datos y obtener el apuntador a dicha base de datos recuperando dentro de la clase la variable global $conexion.
En el mismo constructor de la clase realizamos una query que nos retorna toda la información necesaria del usuario en concreto guardándola en los atributos de la clase.
Para consultar o modificar dichos atributos y tuplas de la base de datos usaremos los métodos getters y setters.
Por ejemplo para retornar y modificar el nombre de un usuario deberíamos tener los siguientes métodos incorporados en la clase.
public function getName() {
return $this->name;
}
public function setName($new_name) {
global $conexion;
$update = "UPDATE users SET name = '$new_name' WHERE user_id = '$this->user_id'";
mysql_query($update, $conexion);
}
El método «getName()» simplemente retorna el valor del atributo «name» de la clase. Nos podemos fijar que estamos empleando el operador «$this->» para referirnos que queremos retornar el nombre de esta instancia en concreto.
El método «setName($new_name)» podría ser más sotisficado pero aquí ya realiza la operación que se desea que es la de modificar el nombre del usuario del objeto instanciado.
La clase podría tener muchas más características o métodos según la aplicación considerando la abstracción de datos.
Para instanciar clases en nuestras páginas deberemos hacer algo como lo siguiente:
require('classes/user.php');
$user = new User($user_id);
echo $user->getName(); //Rotorna el nombre de usuario instanciado
Deja una respuesta