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';
}

