Saltar al contenido

¿Puedo/Cómo… llamar a una función protegida fuera de una clase en PHP?

Ya no necesitas investigar más por internet porque llegaste al lugar indicado, tenemos la respuesta que buscas sin complicarte.

Solución:

Técnicamente, es posible invocar métodos privados y protegidos utilizando la API de reflexión. Sin embargo, el 99% de las veces hacerlo es una muy mala idea. Si puede modificar la clase, entonces la solución correcta probablemente sea simplemente hacer público el método. Después de todo, si necesita acceder a él fuera de la clase, eso anula el punto de marcarlo como protegido.

Aquí hay un ejemplo de reflexión rápida, en caso de que esta sea una de las pocas situaciones en las que es realmente necesario:

setAccessible(true);
$r->invoke(new foo(), "Hello World");

Ese es el punto de OOP – encapsulación:

Privado

Only can be used inside the class. Not inherited by child classes.

Protegido

Only can be used inside the class and child classes. Inherited by child classes.

Público

Can be used anywhere. Inherited by child classes.

Si aún desea activar esa función en el exterior, puede declarar un método público que active su método protegido:

protected function b()



public function a()
  $this->b() ;
  //etc

Puede anular esta clase con otra en la que lo haga público.

class cExample2 extends cExample 
  public function funExample()
    return parent::funExample()
  

(Tenga en cuenta que esto no funcionará con miembros privados)

Pero la idea de miembros privados y protegidos es NO SER llamados desde afuera.

Si posees algún titubeo o capacidad de renovar nuestro tutorial eres capaz de realizar una aclaración y con gusto lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *