Taller > PHP > Program. Objetos
Clases y Objetos en PHP
En PHP, la Programación Orientada a Objetos (OOP) permite agrupar datos y funciones relacionadas en clases y objetos, facilitando la creación de aplicaciones más organizadas y mantenibles.
¿Qué es una Clase?
Una clase es una plantilla o modelo que define las propiedades y métodos que un objeto puede tener. Las propiedades son las características que describen al objeto, mientras que los métodos son las funciones que pueden operar sobre las propiedades.
Sintaxis básica para definir una clase
Para definir una clase en PHP, utilizamos la palabra clave class, seguida del nombre de la clase y un par de llaves {}. Dentro de las llaves, podemos definir las propiedades y métodos de la clase.
<?php
class Animal {
// Propiedades
public $nombre;
public $especie;
// Métodos
public function hacerSonido() {
echo "Este animal hace un sonido\n";
}
}
?>
En este ejemplo, hemos definido una clase Animal con dos propiedades (nombre y especie) y un método hacerSonido().
¿Qué es un Objeto?
Un objeto es una instancia de una clase. Cuando creamos un objeto a partir de una clase, ese objeto hereda todas las propiedades y métodos definidos en la clase, pero puede tener valores diferentes para las propiedades.
Creación de Objetos
Los objetos se crean utilizando la palabra clave new. Cada objeto puede tener valores únicos para sus propiedades, pero compartirá los métodos con otros objetos de la misma clase.
Ejemplo: Crear un objeto en PHP
<?php
class Animal {
public $nombre;
public $especie;
public function hacerSonido() {
echo $this->nombre . " hace un sonido\n";
}
}
// Crear un objeto de la clase Animal
$gato = new Animal();
$gato->nombre = "Felix";
$gato->especie = "Gato";
$gato->hacerSonido();
?>
Explicación del código
La propiedad nombre se establece con el valor «Felix» para el objeto $gato.
El método hacerSonido() utiliza el valor de nombre para mostrar un mensaje específico.
Al llamar $gato->hacerSonido(), obtenemos: Felix hace un sonido.
Métodos para Establecer y Obtener Propiedades
A menudo, queremos proteger las propiedades de una clase para que no puedan modificarse directamente desde fuera de la clase. Para hacer esto, podemos utilizar métodos “setter” y “getter” para establecer y obtener los valores de las propiedades de manera controlada.
Ejemplo de Métodos Setter y Getter
<?php
class Coche {
private $marca;
private $color;
// Método setter para la marca
public function setMarca($marca) {
$this->marca = $marca;
}
// Método getter para la marca
public function getMarca() {
return $this->marca;
}
// Método setter para el color
public function setColor($color) {
$this->color = $color;
}
// Método getter para el color
public function getColor() {
return $this->color;
}
}
$coche = new Coche();
$coche->setMarca("Honda");
$coche->setColor("Azul");
echo "Marca: " . $coche->getMarca() . "\n";
echo "Color: " . $coche->getColor() . "\n";
?>
Explicación del código
La propiedad marca es privada, por lo que solo puede modificarse usando el método setMarca() y accederse a través de getMarca().
De manera similar, la propiedad color es privada, pero se manipula a través de los métodos setColor() y getColor().
El objeto $coche se crea, se le asigna la marca “Honda” y el color “Azul”, y luego se imprimen estos valores utilizando los métodos getter.
Creación de Múltiples Objetos
Uno de los grandes beneficios de las clases en OOP es que podemos crear múltiples objetos que compartan la misma estructura de clase pero que contengan diferentes valores.
Ejemplo de múltiples objetos
<?php
class Libro {
public $titulo;
public $autor;
public function __construct($titulo, $autor) {
$this->titulo = $titulo;
$this->autor = $autor;
}
public function mostrarDetalles() {
echo "Título: " . $this->titulo . ", Autor: " . $this->autor . "\n";
}
}
// Crear múltiples objetos de la clase Libro
$libro1 = new Libro("1984", "George Orwell");
$libro2 = new Libro("Cien años de soledad", "Gabriel García Márquez");
$libro1->mostrarDetalles();
$libro2->mostrarDetalles();
?>
Explicación del código
Se define una clase Libro con un método constructor que inicializa las propiedades titulo y autor.
Creamos dos objetos $libro1 y $libro2, cada uno con diferentes valores para sus propiedades.
Al llamar a mostrarDetalles(), se muestran los detalles específicos de cada libro.
Conclusión
Las clases y objetos son los pilares fundamentales de la Programación Orientada a Objetos en PHP. A través de las clases, podemos organizar y estructurar mejor nuestro código, facilitando su mantenimiento y reutilización.
La creación de objetos nos permite instanciar múltiples copias de una clase, cada una con propiedades personalizadas. Este enfoque proporciona mayor flexibilidad y poder al desarrollar aplicaciones complejas en PHP.