28
Feb
0

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 variablesfá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 />";
    }
}
?>

Ver código en CodePad.org

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>

Ver código en CodePad.org

Creo que los comentarios lo explican todo… jeje .. y bueno, si quieres ver en funcionamiento el ejercicio, puedes acceder aquí:

Ejercicio Registra-Personas.

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!!!

votar

Te ha gustado este post?
Suscríbete al RSS feed y obtén todos los post en directo cuando se posteen.

Compartir este post:

Twittealo!Guardalo en tus favoritos online en Delicious :)


Publica tu comentario :)



Celadon theme by the Themes Boutique