Programación Orientada a Objetos [PHP5]
A diferencia de lo que muchos de los que me conocen creen, yo no he programado mucho en este campo de la orientación a objetos por falta de costumbre, pero esta semana me he querido meter de lleno porque es mucho mejor programar con clases, que con archivos sus funciones y cosas estructuradas. Es una forma de programación avanzada y hace de tus aplicaciones muy fáciles de extender a más funciones sin el mayor daño al resto de código.
El funcionamiento no es tan diferente del que me/nos hayan enseñado en Java, en PHP existen clases, dentro de éstas variables y funciones; luego pueden instanciar tales clases con objetos y éstos, llamar a sus propias funciones y variables… fácil no?… Bueno, y aunque no entiendas, puedes aprender de eso aquí.
Creando una clase
Por ejemplo, para este post voy a crear una clase simple llamada persona la cual va a tener las variables $nombre y $apellido, un constructor, un destructor y una función la cual lista las variables del objeto:
<?php
class persona{
//propiedades de la clase
public $nombre;
public $apellido;
//constructor
public function __construct($nombre, $apellido){
$this->nombre = $nombre; //el $this-> hace referencia a la propiedad de la clase, asignandole el valor entrante en el metodo
$this->apellido = $apellido;
}
//destructor
public function __destruct(){
echo "<br>(destruido el objeto: " . $this->nombre." ".$this->apellido.")";
}
//un metodo cualquiera
public function muestra_persona(){
return $this->nombre." ".$this->apellido."<br />";
}
}
?>
Como pueden ver no es cosa del otro mundo crear una clase en PHP, aunque claro, hay que tener algunos criterios creando tales clases, como por ejemplo que lo ideal es que las clases no impriman nada, todo mediante returns, (todo tiene su excepcion claro).
El destructor es opcional solo que como lo he puesto arriba, siempre que se instancia una clase rápidamente se va a destruir, esto es ideal para aquellos que usan objetos en no más de un archivo, en donde no tiene sentido tener al objeto en memoria más allá de su tiempo de uso.
La única función que coloqué ahí hace que imprima las propiedades de la clase, que en el constructor tomaron el valor de las variables que han sido pasadas… por lo que al crear un objeto lo idóneo sería hacerlo asi:
$p = new persona("William", "Medina"); //por citar un ejemplo
Nótese que se crea el objeto mediante el operador new, para lo que automáticamente se reconoce que $p (en el caso) es un objeto y no una variable, es por eso que se recomienda nombrar a las variables tipo: “$objPersona” para reconocerlas y diferenciarlas de las variables primitivas.
Al acceder a las propiedades y métodos, los objetos deben usar el operador “->” (‘como en los punteros’ dijo Clayder), asi pues..
$objeto -> metodo();
Para efectos del post… creé un ejercicio que consiste en ingresar esos datos vía formulario, los cuales serán el nombre y apellido, luego los mostrará mediante el método muestra_persona() de la clase…
<?php include("poo1.php");
//incluimos el archivo para poder sacar objetos de sus clases, suponiendo que la clase la llamamos poo1.php ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Registra Personas</title>
</head>
<body>
<?php if(isset($_POST["txtNombre"]) && isset($_POST["txtApellido"]) ){
$p = new persona($_POST["txtNombre"], $_POST["txtApellido"]);
echo "Usted ha registrado a ". $p->muestra_persona()."\n";
//aqui pueden serializar el objeto o guardarlo en una base de datos o por el estilo?
//al final el objeto se destruye porque ha sido dispuesto asi en la clase persona,
//pero aun asi el destructor es opcional
?>
<a href="poo2.php">Regresar al formulario</a><br /><br />
<?php }else{?>
<h2>Registra Personas</h2>
<form id="frmPersona" name="frmPersona" method="post" action="poo2.php">
<table width="42%" border="1">
<tr>
<td width="22%">Nombre:</td>
<td width="78%"><input name="txtNombre" type="text" id="txtNombre" /></td>
</tr>
<tr>
<td>Apellido:</td>
<td><input name="txtApellido" type="text" id="txtApellido" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="Submit" value="Enviar" /></td>
</tr>
</table>
</form>
<?php }?>
</body>
</html>
Creo que los comentarios lo explican todo… jeje .. y bueno, si quieres ver en funcionamiento el ejercicio, puedes acceder aquí:
Espero les haya servido este pequeño apunte, y si hay alguna corrección o algo que agregar, no duden en dejarlo como un comentario.
Saludos!!!
Te ha gustado este post?
Suscríbete al
RSS feed
y obtén todos los post en directo cuando se posteen.
Compartir este post:



