06. Clases y objetos en PHP

Recordatorio de modificadores de acceso

Como dijimos en el capítulo anterior, los modificadores de acceso pueden ser:

  • public: acceso desde cualquier método de la clase u objeto que lo invoque.
  • private: acceso sólo desde los métodos de la clase, los objetos no los pueden invocar.
  • protected: acceso sólo desde los métodos de la clase y subclases que la hereden, los objetos no los pueden invocar.

Métodos mágicos

También en el capítulo anterior hablábamos de lo que eran los métodos mágicos, que son el constructor y el destructor.

  • Método constructor: es aquel método que se ejecuta automáticamente al inicio de instanciar la clase.
  • Método destructormétodo que se ejecuta automáticamente al final de instanciar la clase.

Ejm

Veamos la sintaxis del capítulo anterior en un ejercicio práctico.

Ejm

<?php
class Persona {
    // ATRIBUTOS
    public $nombre;
    public $apellido;
    public $edad;
    public $sexo;
    private $dni;

    // ATRIBUTO ESTÁTICO
    public static $manos = ' 5 dedos en cada mano';

    // CONSTANTE
    const MEJOR_CUALIDAD = ' poder pensar';

    // MÉTODOS CONSTRUCTOR Y DESTRUCTOR
    public function __construct($n, $a, $e, $s) {
        echo "<p><mark>Soy el constructor de la clase</mark></p>";
        $this->nombre = $n;
        $this->apellido = $a;
        $this->edad = $e;
        $this->sexo = ($s) ? 'Macho' : 'Hembra';
    }

    public function __destruct() {
        echo "<p><mark>Soy el destructor de la clase</mark></p>";
    }

    // MÉTODOS DE LA CLASE
    public function saludar() {
        echo '<p>Hola, mi nombre es ' . $this->nombre . '</p>';
    }

    public function comer($comida) {
        echo '<p>Hoy toca comer' . $this->comida . '</p>';
    }

    public function mas_info() {
       
        // LLAMANDO A MÉTODOS
        $this->saludar();
        self::saludar();
        Persona::saludar();

        // LLAMANDO A ATRIBUTOS CON self Y LA PROPIA CLASE
        echo '<p>El ser humano tiene dos manos con' . self::$manos . '</p>';
        echo '<p>La mejor cualidad de un ser humano es' . Persona::MEJOR_CUALIDAD . '</p>';
    }
}

// HACEMOS UNA INSTANCIA A LA CLASE Persona
$francisco = new Persona('Francisco', 'Paredes', 51, true);

// IMPRIMIMOS ALGUNOS ATRIBUTOS
echo '<p>Mi nombre es ' . $francisco->nombre . '</p>';
echo '<p>Mi apellido es ' . $francisco->apellido . '</p>';
echo '<p>Tengo ' . $francisco->edad . ' años</p>';

// IMPRIMIMOS ALGÚN MÉTODO
$francisco->saludar();
$francisco->mas_info();
?>

Función var_dump()

Existe una función denominada var_dump() que nos permite analizar la estructura de un objeto. Veamos un ejm.

var_dump($francisco);
Scroll al inicio