Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

151
Vistas
Usar padre fuera de la clase php

Dado

 abstract class A { public function __get($key) { ... } } class B extends A { public function __get($key) { ... } } class C { public function test($bObject) { //Call the __get function of A on the object of B } }

¿Cómo llamaría a A::__get en un objeto de B desde C::test? He buscado usar un invocable en la clase A::__get y vincularlo al objeto de la clase B, o usar parent, pero ninguno de esos métodos parece ayudar.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En PHP, una forma de hacerlo es con reflexión ( introspección o también metaprogramación ), ya que por el diseño de clase/objeto, la encapsulación normalmente lo prohíbe.

Dado lo siguiente de las definiciones de clase en cuestión:

 $b = new B(); $b->test;

Funciona obteniendo el cierre del método de los padres con el objeto B (por ejemplo $bObject en su pregunta o $b en el ejemplo aquí) y luego llamándolo:

 (new ReflectionObject($b)) ->getParentClass() ->getMethod('__get') ->getClosure($b)('test'); // or: ->invoke($b, 'test');

Demostración: https://3v4l.org/0tj26 y salida para PHP 7.3.0 - 7.3.29, 7.4.0 - 7.4.21, 8.0.0 - 8.0.8:

 string(8) "B::__get" string(4) "test" string(8) "A::__get" string(4) "test"
over 4 years ago · Santiago Trujillo Denunciar

0

Intente usar ReflexionClass y el método getParent.

 $objectB; $key = 'key'; $reflectorB = new ReflectionObject($objectB); $reflectorA = $reflectorB->getParentClass(); $method = $reflectorA->getMethod('__get'); return $method->invoke($objectB, $key);
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda