Programación orientada a objetos (OOP) en PHP

Programación orientada a objetos (OOP) en PHP

Programación orientada a objetos (OOP) en PHP

PHP no es un lenguaje orientado a objetos de forma nativa. Por eso los programadores en este lenguaje se nos hace “difícil” esta característica de la programación. No por que sea “difícil” en si misma, sino, por que hay un dicho que dice “la costumbre hace ley”

A partir de PHP 5, el modelo de objetos ha sido reescrito para permitir un mejor rendimiento y más características. Este fue un cambio importante desde PHP 4. PHP 5 tiene un modelo de objetos completo. PHP trata los objetos de la misma manera como referencias o la manipulación, lo que significa que cada variable contiene una referencia de objeto en lugar de una copia de todo el objeto.

Podemos utilizar objetos en PHP para facilitar y resumir nuestros códigos. Sin mencionar el incremento de seguridad que la programación orientada a objetos permite en si misma.

Al venir la de escuela de la programación orientada a eventos como lo es php, resulta tedioso al principio. Sin embargo, una vez que te familiarizas con la estructura de la OOP, siempre la utilizarás hasta para el mas mínimo “Hello World”.

Para facilitarles la transición a la “OOP”, les voy a mostrar una manera sencilla de como utilizarla la primera vez. A partir de ahí, una vez entendida la estructura básica, les será más sencillo ampliar los conocimientos y utilidad de este tipo de programación en PHP.

Primero, es esencial que conozcamos los componentes básicos de una clase o librería de objetos. Estas están compuestas de dos elementos básicos: propiedades y métodos.

Las propiedades no son más que las constantes y variables que se utilizarán a lo largo de la clase o librería para ser alimentadas con valores para la operación de los métodos.

Los métodos son simplemente funciones regulares que realizan las operaciones con los valores asignados a las propiedades.

En resumen, una clase o librería se vería así:

<?php
/**
* Mi primera clase en OOP
* @Author Federico Guzman
*
*/
class miClass
{
// Declaración de la propiedad
$var = ‘Hello World’;

// Declaración del método
function ImprimeVar() {
echo $this->var;
}
}
?>

Sencillo, verdad? Si notamos la OOP no es muy distinta a la programación que ya conocemos en PHP. La diferencia radica en que ahora en vez de tener funciones sueltas para cada cosa, podemos unir diferentes funciones que realizan operaciones distintas con los mismos datos o valores para simplificar y optimizar nuestro código.

Ahora vamos a realizar un ejemplo completo y de implementación el cual podamos utilizar en un proyecto real.

Es muy importante saber cual será la función o utilidad con la cual queremos solucionar una necesidad al iniciar una clase o librería en PHP. Por ejemplo, para nuestra clase vamos a crear un etiquetado HTML para imprimir información como si fuera una página HTML. Es muy útil cuando trabajamos con sistemas modulares cargando información desde una base de datos, por ejemplo.

<?php
/**
* Generador de archivos html o páginas
* @Author Federico Guzman
* @inputs Title, Keywords, Description, Conent
* @outputs [string]
*/
class Html {

// Declaración de la(s) propiedad(es)
var $Title;
var $Keywords;
var $Description;
var $Content;

//Declaración de los métodos (funciones)

//Imprime el código, este sería nuesto metodo principal y el cual queremos utilizar combinando todos lso demás

function Imprime( ) {
echo “<html>\n<head>\n”;
$this->ImprimeTitle( );
$this->ImprimeKeywords( );
$this->ImprimeDescription( );
echo “\n</head>\n<body>\n”;
$this->ImprimeContent();
echo “\n</body>\n</html>\n”;
}

//Imprime el titulo
function ImprimeTitle( ) {
echo “<title>” . $this->Title . “</title>\n”;
}

//imprime los keywords
function ImprimeKeywords( ) {
echo ‘<meta name=”keywords” content=”‘ . $this->Keywords . ‘”>’;
}

//Imprime la descripción
function ImprimeDescription( ) {
echo ‘<meta name=”Description” content=”‘ . $this->Description . ‘”>’;
}

//Imprime contenido
function ImprimeContent( ) {
echo $this->Content;
}
}
?>

Como podemos ver y les comentaba, una clase no es mas que un conjunto de funciones llamadas métodos que interectúan entre sí compartiendo un objetivo determinado, en este caso imprimir bloques de código que es su conjunto conforma un etiquetado html para crear una página html.

Ya tenemos nuestra clase o librería, ahora vamos a utilizarla. Para ello pondremos nuestra clase en una archivo el cual llamaremos html.class.php, así identificamos que esta es la clase html, y que es una clase en php.

Para utilizar nuestra clase lo primero es declarar que vamos a utilizarla y a continuación asignamos los valores de las propiedades (variables) y llamando el método principal que deseamos utilizar.

Colocamos el siguiente código en un archivo php completamente vacío, es decir, sin ninguna linea de código html o php.

<?php

//incluimos nuestra clase
include “html.class.php”;

//Creamos la instancia
$pagina = new Html;

//asignamos los valores a las promiedades
$pagina->Title = “Programacion orientada a objetos (OOP) en PHP”;
$pagina->Keywords = “Weblantropia, OOP, Clases, PHP”;
$pagina->Description = “Pagina generada con clases en php”;
$pagina->Content = “<P>Hello World.</P>”;

//imprimimos nuestro método (función) principal
$pagina->Imprime( );

?>

Listo. Como pudimos notar si ejecutamos el ejemplo veremos una pagina con el siguiente código:

<html>
<head>
<title>Programacion orientada a objetos (OOP) en PHP</title>
<meta name=”keywords” content=”Weblantropia, OOP, Clases, PHP”>
<meta name=”Description” content=”Pagina generada con clases en php”>
</head>
<body>
<P>Hello World.</P>
</body>
</html>

Una ventaja que nos ofrece la OOP en particular es que podemos llamar cualquier método de la clase de forma sencilla para ser utilizada de manera regular como alimentar una variable con el retorno de un método. Por ejemplo:

Cambiemos:

$pagina->Imprime( );

Por:

$pagina->ImprimeContent( );

Y el resultado sería:

<P>Hello World.</P>

La programación orientada a objetos es sencilla y rápida. Contiende muchas opciones las cuales si quieren conocer a profundidad pueden encontrar todo lo referente a esta en PHP.net.

  • Thanks a lot for that extremely cool post.