Php orientado a objetos, parte 1: Clases, propiedades y métodos

Bien, en los siguientes artículos que escribiré a continuación explicaré de qué se trata la programación orientada a objetos en PHP. Trataré de hacerlo lo más claro y fácil posible.

Bueno, comencemos. Si no sabés a qué se refiere el concepto de ‘objetos’ en programación, y aunque el término puede resultar confuso, y quizás al principio te cueste entenderlo. Simplemente te diré que un objeto en programación puede ser cualquier cosa.

Osea, un objeto es todo aquello que tiene propiedades (valores) y métodos (comportamientos). Las propiedades permiten guardar datos del objeto, cumplen la misma función que una variable; mientras que los métodos permiten realizar operaciones, cumplen la misma función que, valga la redundancia, una función.

Un ejemplo fácil puede ser por ejemplo una persona. Una persona puede ser un objeto porque tiene propiedades, valores. Una persona tiene un nombre, un apellido, una fecha de nacimiento, un número de documento, si es hombre o mujer, etc; y estas serían algunas de las propiedades de un objeto persona. Pero también tiene métodos o comportamientos, como dormir, comer, caminar, correr, etc.

También un auto podría ser un objeto porque tiene propiedades como el color, la marca, la patente, si está encendido o apagado el motor. Y tiene métodos, como acelerar, frenar, encender el motor o apagar el motor. A su vez estas propiedades y métodos trabajan juntas. Por ejemplo, como acabo de decir, el objeto auto puede tener una propiedad encendido que guarde un valor boolean, si es true es porque está encendido el motor y si es false es por está apagado; y también tener un método para encender el motor o apagarlo, lo cual alteraría el valor de dicha propiedad según el método que se llame.

Ahora bien, ¿cómo puedo hacer yo para crear un objeto en PHP? Para ello necesito una clase. Una clase es como un molde, un modelo. Algo que defina la estructura del objeto. Por ejemplo si yo tuviese un objeto edificio, la clase sería el plano de un arquitecto para crear ese edificio u otro edificios similares.

En primer lugar, y aunque en este lenguaje de programación no es obligatorio, una clase debería crearse en un archivo PHP que no comparta más código que la misma clase. Para ello, y para empezar a probar código, creá un archivo .php con un nombre, por ejemplo ‘test.php’. A la misma altura crear una carpeta llamada ‘clases’ y dentro de esta carpeta crear un archivo con el nombre ‘Persona.php’

Bueno, ahora editaremos ese último archivo y crearemos nuestra primer clase PHP.

Primero que nada las clases se escriben con la palabra reservada class y el nombre de la misma, éste debería ir con mayúsculas la primer letra, si bien esto último no es obligatorio es una buena práctica escribirla así, ya que de esta forma se acostumbra. Luego dentro de llaves {} irán las propiedades y métodos que definiremos dentro de la clase.

Crearemos una clase Persona, de esta forma (en nuestro archivo Persona.php):

<?php 
 class Persona { 
    //Acá dentro va el código 
 }
?>

Y dentro de esta clase tendremos tres propiedades: nombre, apellido y edad:

<?php 
 class Persona { 
    public $nombre;
    public $apellido;
    public $edad;
 }
?>

Seguramente habrás notado que las propiedades en PHP se escriben igual que una variable, con el signo $ adelante y el nombre. Pero ¿qué significa la palabra public? Eso lo veremos más adelante, por ahora sólo ignorala.

Bueno, ahora ya que tenemos nuestra clase creada, iremos a nuestro archivos test.php y crearemos nuestro primer objeto. Primero importamos nuestra clase Persona, para tener el modelo del objeto a crear con require_once:

<?php
   require_once 'clases/Persona.php';
?>

Crearemos nuestro objeto de esta forma:

<?php
 require_once 'clases/Persona.php';
 //Creamos el objeto.
 $persona = new Persona();
 //Seteamos las propiedades.
 $persona->nombre = 'Fernando';
 $persona->apellido = 'Gaitan';
 $persona->edad = 26;
 //Mostramos el resultado de las propiedades.
 echo 'Nombre: ' . $persona->nombre . '<br />';
 echo 'Apellido: ' . $persona->apellido . '<br />';
 echo 'Edad: ' . $persona->edad . '<br />';
?>

Ok, primero incluimos la clase Persona, luego creamos el objeto con la palabra reservada new, de esta forma le aclaramos a nuestro programa que estamos creando un nuevo objeto basado en la clase Persona.

Seguramente habrán notado que un objeto tiene la misma forma que una variable (de hecho es una variable) con el signo $ y el nombre de la variable. Luego, desde el objeto llamamos a las propiedades $nombre, $apellido y $edad con una especie de flecha ->, que nos permite acceder a los mismos; pero ojo, las propiedades se definen dentro de la clase con $ más nombre de la propiedad, sin embargo como verán, al ser invocados por el objeto no se usa el signo $, sino que directamente se pone el nombre. Y finalmente mostramos por pantalla los valores con echo. Ejecuta en tu navegador el archivo test.php para comprobarlo.

Bueno, ahora sólo me falta mostrar cómo se crea un método dentro de una clase, por lo que iremos nuevamente a nuestro archivo Persona.php y los editaremos con estas líneas:

<?php 
 class Persona { 
    public $nombre;
    public $apellido;
    public $edad;
    public function saludar(){
       return 'Hola, soy ' . $this->nombre . ' ' . $this->apellido . ' y tengo ' . $this->edad . ' años '; 
    }
 }
?>

Como ven, también creamos un método saludar() que tiene la misma estructura que una función, sólo que con la palabra reservada public (insisto, más adelante veremos qué significa esa palabra) adelante. Y dentro del mismo utilizamos $this-> para llamar a las propiedades de la clase. Siempre que dentro de un método necesitemos acceder a propiedades u otros métodos de la misma clase, usaremos $this-> más el nombre de la propiedad o método.

Probaremos el comportamiento del método saludar() en test.php de la siguiente forma:

<?php
 require_once 'clases/Persona.php';
 //Creamos el objeto.
 $persona = new Persona();
 //Seteamos las propiedades.
 $persona->nombre = 'Fernando';
 $persona->apellido = 'Gaitan';
 $persona->edad = 26;
 //Mostramos el resultado de las propiedades.
 echo $persona->saludar();
?>

Ejecuta test.php en tu navegador y mirá el resultado.

Bueno, hasta acá termina la primer parte. Prometo que las próximas serán un poco más cortas 🙂

Saludos a todos.

Siguiente: Php orientado a objetos, parte 2: Método constructor y destructor


13 Respuestas a “Php orientado a objetos, parte 1: Clases, propiedades y métodos”

  1. QUE GENIAL!! llevaba días investigando sobre la orientación a objetos en PHP y lo que buscaba en la red no lo entendía muy bien hasta que encontré tu página. Muy bien explicado. Gracias por compartir tus conocimientos con los que recién empezamos en este mundo del PHP. Seguiré leyendo las demás partes 😀

      1. que tal fernando testeando este codigo de esta clase me manda error porque ?

        lo otro es que veo que declara class Persona y luego la incluyes como clases/Persona.php.

        pregunto no sera esto donde me manda error. por favor ayudame estoy aprendiendo para hacer mi tesis con tu tutorial pero necesito me aclares las preguntas.
        gracias.

  2. hola me gustaría saber como se puede hacer un método constructor para poder registrar comentarios y publicarlos al darle click a un botón de envío o publicación

  3. Comentando , que me a gustado esta explicación aunque apenas comenzamos , hace poco en la universidad nos han tocado el tema de POO , pero muy por encima y por eso me decidí a buscar mas información. muchas gracias por hacer estos tutoriales !!

    Gracias y un abrazo !!!