Aprende todo lo que necesitas saber sobre las funciones o métodos de las Classes de PHP
Funciones o Métodos de las Classes en PHP
Una vez tengamos la class creada podremos crear los métodos (funciones internas de la class) para interactuar con el objecto que creemos a partir de ésta.
Podemos definir functions de tipo public, private o protected que modifiquen al objeto de la class.
Siguiendo con la class Animal añadiremos un método para asignar un sonido al animal. Por ejemplo “Guau” para hacer referencia a un perro.
class Animal { ... public function setSonido() { $this->sonido = 'Guau'; } }
De esta manera, cuando ejecutemos la función $animal->setSonido() automáticamente ejecutaremos la función y se añadirá “Guau” en la propiedad $sonido del objeto $animal.
$animal->setSonido();
Pero esto no tiene mucho sentido. Ya que el “Guau” debería ser para perros y no para animales en general. ¿Qué podemos hacer?
Podríamos completar la función __construct para que además del nombre llame a todos los métodos posibles para tener el objeto creado. Como estaremos trabajando dentro de la misma class debemos usar el $this para interectuar con las propiedades de ésta:
class Animal { public $nombre; public $animal; public $raza; public $sonido; public $peligroso; public function __construct(string $nombre = '') { $this->nombre = $nombre; $this->setAnimal(); $this->setSonido(); $this->setPeligroso(); $this->setRaza(); } public function setRaza() { $this->raza = null; } public function setAnimal() { $this->animal = 'Perro'; } public function setSonido() { $this->sonido = 'Guau'; } public function setPeligroso() { $this->peligroso = false; } }
Además de funciones de tipo setter (asignar variables a las propiedades) podemos añadir inteligencia al objeto. Vamos a hacer que dependiendo de las variables actúe de una manera u otro.
Por ejemplo, a la class Animal vamos a preguntarle si es peligroso y que nos devuelva un mensaje que dependa de si es, o no, peligroso.
public function esPeligroso() { return $this->peligroso ? '¡¡Es peligroso!!' : 'No és peligroso'; }