PHP / POO – Programación orientada a objetos
En el siguiente artículo veremos una introducción a programación orientada a objetos en PHP.
contenido del artículo:
- Introducción a POO
- objeto
- ventajas que nos brinda usar objetos
- clases
- Cómo declarar una clase en PHP
- Instanciar una clase en PHP
- Visibilidad
- Herencia de clases
- Interfaces
Introducción a POO
https://blastcoding.com/objetos-y-clases-en-php-poo/#introPara que cualquiera que no sepa programar y este mirando estas definiciones y como se declaran y usan los objetos empezare por lo más sencillo que es mostrarle lo que seria un objeto en el mundo real y que seria una clase en el también.De esta manera será más fácil entender que son los objetos y clases en PHP u otro lenguaje.
Objeto
https://blastcoding.com/objetos-y-clases-en-php-poo/#objetoPara entender esto le pido que mire alrededor de su casa, mire su casa y tome un objeto por ejemplo la televisión como está compuesta esta tiene botones, parlantes, pantalla, etc los llamaremos campos o atributos.
Además de esto cumple ciertas funciones, a estas le llamaremos métodos.
En otras palabras tenemos 2 grupos:
- Los campos compuestos por los botones, parlantes, pantalla y otros.
- Los métodos que son las funciones que esta tiene, por ejemplo, prender o apagar la tele, subir el volumen, etc.
Los objetos en software son similares a esto
Ventajas que nos brinda usar objetos.
https://blastcoding.com/objetos-y-clases-en-php-poo/#ventajas- Modularidad: el código fuente de un objeto puede escribirse y mantenerse independiente del código de otros objetos.
- Ocultamiento: al interactuar con los métodos del objeto, la implementación que sucede internamente queda oculta de lo exterior.
- Reusabilidad: Si un objeto ya existe, puedes usarlo en tu programa.
- Modificabilidad: si un objeto da problemas puede ser reemplazado con facilidad, esto es como cuando hay que reparar algo y simplemente se cambia la pieza.
Clases
https://blastcoding.com/objetos-y-clases-en-php-poo/#clasesEn la clase imaginé que tiene los planos de como crear una televisión y de esta manera podemos hacer las televisiones que queramos. O los planos de una casa, por ejemplo.
Una clase puede ser tan elaborada como se desee.
Cómo declarar una clase en PHP
https://blastcoding.com/objetos-y-clases-en-php-poo/#declarar_clase_en_phpEn PHP podemos declarar una clase con la palabra clave class, y su sintaxis es la siguiente:
Sintaxisclass nombre_de_clase{ }
En el siguiente ejemplo crearemos una clase llamada Televisor
<?php class Televisor{ //como mera introducción puse public private y protected public $pantalla; private $parlantes; protected $botones; function __construct(){ } function prender(){ echo "la tele se prendio"; } function apagar(){ echo "la tele se apago"; } } ?>
El constructor __construct
https://blastcoding.com/objetos-y-clases-en-php-poo/#constructor_de_claseMuchas veces necesitamos que nuestro objeto, realice una tarea al ser instanciado o que reciba parámetros. Esto lo podemos hacer con el constructor; dentro de la clase el constructor es el método __construct
.
Por ejemplo, si necesitamos si sabemos que nuestro objeto va a tener siempre atributos de algún tipo podemos hacer lo siguiente:
constructorfunction __construct($p){ //en este constructor le estoy pasando un parámetro $p el cual sera el valor de pantalla. $this->pantalla = $p; }Lamentablemente PHP no soporta la sobrecarga de métodos en las versiones anteriores a 5.3 y por lo tanto no podemos definir 2 constructores, u otros 2 métodos cuales sea. Pero si podemos simularla. Puede ver más sobre este tema en sobrecarga de constructores
La palabra clave $this
https://blastcoding.com/objetos-y-clases-en-php-poo/#la_palabra_clave_$thisEn PHP, la palabra clave $this
se utiliza dentro de métodos de clases para hacer referencia al objeto actual al que pertenece el método. $this
es una referencia al propio objeto en el que se está trabajando dentro del contexto de una clase.
Permite acceder a las propiedades y métodos de la instancia actual de la clase desde dentro de sus propios métodos.
Instanciar la clase
https://blastcoding.com/objetos-y-clases-en-php-poo/#instanciar_clase_phpPara ver como instanciar agregaremos el siguiente código a la clase que creamos anteriormente. Vea que en el código siguiente usamos la palabra clave new
para crear una instancia de la clase Televisor.
$Televisior24 = new Televisor(); $Televisior24->prender(); $Televisior24->pantalla = "24 pulgadas"; echo "<br>".$Televisior24->pantalla;
Visibilidad
https://blastcoding.com/objetos-y-clases-en-php-poo/#visibilidadTanto en PHP como otros lenguajes, podemos definir la visibilidad de las propiedades y los métodos utilizando las palabras claves: public, private y protected.
public
: Todos los métodos y propiedades con la palabra clave public son accesibles dentro del proyecto.
protected
: Todos los métodos y propiedades con la palabra clave protected serán accesibles, tanto dentro de la clase así también como en subclases.
private
: todos los métodos como las propiedades con la palabra clave private solo podrán ser accesibles en la clase.
Herencia en clases PHP
https://blastcoding.com/objetos-y-clases-en-php-poo/#herenciaTarde o temprano nos damos cuenta en que un objeto, forma parte de un grupo más grande, para ponernos en contexto piénselo de esta manera un auto y un camión tienen cosas en común ambos son vehículos. Si nos ponemos a pensar todos los vehículos tienen luces, ruedas, parabrisas, bocina, etc.
Entonces seria bueno que cada vez que hagamos un vehículo que tenga estos atributos y algunos comportamientos que se dan en los diferentes vehículos no los tengamos que repetir.
class Vehiculo{ private $luces private $ruedas; private $puertas public function prender(){ //codigo para prender el auto } public function apagar(){ //codigo para apagar el auto } }
En PHP podemos heredar los atributos y métodos de la clase Vehículo usando la palabra clave extends
, también podemos decir que la clase Vehículo es la clase padre y Auto es la clase hijo.
class Auto extends Vehiculo{ public function funcionalidad(){ //codigo para funcionalidad } }
Interfaces
https://blastcoding.com/objetos-y-clases-en-php-poo/#interfacesTomemos en cuenta que hay situaciones en que ya sabemos el comportamiento que tendrá el objeto. De esta manera ya podemos predefinir que métodos se tendrían que implementar en ciertas clases. Y ya que andábamos con esto de los vehículos.
El siguiente ejemplo de como crear una interfaz será para un vehículo. Por convenio, las interfaces llevan una letra i delante.
interface iVehiculo { public function prender(); public function apagar(); }
Nota: los métodos de las interfaces deben ser public
Así se define una interfaz en PHP, definimos los métodos y si estos tienen parámetros o no.
Para poder usar una interfaz en una clase se debe usar la palabra clave implements
class Vehiculo implements iVehiculo{ private $luces private $ruedas; private $puertas public function prender(){ //codigo para prender el auto } public function apagar(){ //codigo para apagar el auto } }
Tenga en cuenta que las funciones prender y apagar deben estar definidas en la clase ya que estamos usando la interfaz iVehiculo.
- Anterior: Funciones en PHP
- Siguiente: Namespaces en PHP