Modificadores de acceso en PHP

A

Al igual que otros lenguajes, PHP también implementa cierto ámbito para los métodos o atributos de la clase. Los modificadores de acceso definen dónde se puede acceder a las variables o métodos de clase. En este artículo, aprenderá acerca de la modificadores de acceso en PHP POO y sus tipos.

Tipos de modificadores de acceso en PHP

Hay tres modificadores de acceso en PHP.

Público: cuando crea un método o atributo en la clase de PHP y no especifica el modificador de acceso, se establece en público de forma predeterminada. En este modo, el método o atributo es accesible desde cualquier lugar.

Privado: cuando crea un método o una variable con un modificador de acceso privado, solo se puede acceder a él dentro de la clase en la que se creó.

Protegido: se puede acceder al método o atributo protegido dentro de la clase en la que se creó. Además, las clases derivadas de esta clase pueden ser un método y un atributo protegidos.

Ejemplo

<?php
class Person{
  public $name;
  protected $age;
  private $height;
}

$x= new Person();
$x->name = 'Jawad'; // OK
$x->age= '32'; // ERROR
$x->height= '5.4'; // ERROR
?>

Explicación del ejemplo anterior

  • En el ejemplo anterior, creamos una clase Persona con tres tipos de atributos con tres tipos diferentes de modificadores de acceso.
  • El atributo de nombre se establece en público. Mientras que la edad y la altura se establecen en protegido y privado respectivamente.
  • Cuando intentamos acceder al nombre del atributo fuera de la clase y asignarle algún valor, funciona bien.
  • Pero, cuando tratamos de asignar valor a los atributos de edad y altura fuera de la clase, se produce un error fatal.

Entonces, del ejemplo anterior, tiene una comprensión clara de los modificadores de acceso en PHP. Practiquemos los métodos.

Métodos públicos, privados y protegidos en PHP

<?php
class Person{
  public $name;
  public $age;
  public $height;

  function set_name($n) {  // a public function (default)
    $this->name = $n;
  }
  protected function set_age($a) { // a protected function
    $this->age = $a;
  }
  private function set_height($h) { // a private function
    $this->height = $h;
  }
}

$person = new Person();
$person->set_name('Jawad'); // OK
$person->set_age('26'); // ERROR
$person->set_height('5.4'); // ERROR
?>

Explicación del ejemplo anterior

  • En el ejemplo anterior, creamos una clase Persona con tres tipos de métodos con tres tipos diferentes de modificadores de acceso.
  • El método de nombre se establece en público. Mientras que la edad y la altura se establecen en protegido y privado respectivamente.
  • Cuando intentamos acceder al nombre del método fuera de la clase y asignarle algún valor, funciona bien.
  • Pero, cuando tratamos de asignar valor a los métodos de edad y altura fuera de la clase, se produce un error fatal.

Además de estos tres modificadores de acceso, tenemos modificadores de acceso Abstract y Final en PHP/. En la siguiente sección, los aprenderá con ejemplos.

Modificador de acceso abstracto en PHP

El modificador de acceso abstracto solo se puede aplicar a la clase y los métodos. No podemos usar resúmenes con los atributos de clase.

Una vez que usamos abstract con la clase, su objeto no se puede iniciar porque no tiene ningún constructor.

Además, recuerde, si no usa un modificador de acceso abstracto con la clase y declara algún método abstracto dentro de ella. La clase se vuelve abstracta como un todo.

En el

<?php

abstract class Bike {

    private $maxSpeed = 80;

    // Simple method
    public function drivingSpeed() {
        return "Driving at " . $this->maxSpeed . " kilometer/hour";
    }

    // Abstract method
    abstract public function drive();
}

class Police extends Bike {

    public function drive() {
        return "Driving out of speed limit.";
    }

}

$bike= new Police();
echo $bike->drivingSpeed();

?>
  • En el ejemplo anterior, creamos una clase abstracta Bike que contiene un método abstracto drive().
  • Creamos otra clase que proporciona la implementación de la unidad de método abstracto.
  • Como no podemos crear un objeto de la clase abstracta, usamos la clase Police.

Modificador de acceso final en PHP

Al igual que el modificador de acceso abstracto, no podemos usar el modificador de acceso final en PHP con los atributos de la clase. Podemos hacer que la clase o sus métodos sean finales.

Una clase con una palabra clave final no puede ser heredada por las otras clases. Además, el método con el modificador de acceso final no puede ser anulado por las subclases derivadas de esta clase.

Por ejemplo – Clase final en PHP

<?php

final class ParentClass {

    final function msg1() {
        echo "Method 1 of final class";
    }

    function msg2() {
        echo "Method 2 of final class";
    }
}

$obj1 = new ParentClass();
$obj1->msg1();
$obj1->msg2();

?>
  • En la clase anterior, creamos un método final msg1() y un método simple msg2().
  • No podemos anular el método final msg1(). Sin embargo, los métodos msg2() pueden ser anulados por la clase que lo hereda.
  • Intente practicar este problema creando una clase que amplíe la clase Padre. Implemente ambos métodos y verifique qué método produce un error al anularlo.

Otro Ejemplo – Método Final en PHP

<?php

class ParentClass {

    final function msg1() {
        echo "Final Method 1 of simple class";
    }

    function msg2() {
        echo "Simple method 2 of simple class";
    }
}

class ChildClass extends ParentClass {

    function msg1() {
        echo "Trying final method to override.";
    }

}

?>
  • En el ejemplo anterior, creamos una clase simple o no final que tiene dos métodos. msg1() es un método final y msg2() es simple.
  • Creamos una clase secundaria que amplía la clase principal e intentamos anular el método final msg1() de la clase principal.
  • Producirá un error fatal y no podrá anular el método final de la clase principal.

Agregar comentario

Red de tutores

Aprende PHP de la A a la Z