Tengo una clase que configura un alias de clase para otros nombres de clases. Cuando se llama a una función dentro de esta clase a través de la clase con alias, necesito saber qué alias se utilizó. ¿Hay alguna manera de hacer esto en PHP?En PHP, ¿cómo se obtiene la clase llamada con alias cuando se usa class_alias?
que han intentado el siguiente código:
class foo
{
public static function test()
{
var_dump(get_called_class());
}
}
class_alias('foo', 'bar');
foo::test();
bar::test();
que da salida:
string 'foo' (length=3)
string 'foo' (length=3)
Pero quiero bar::test();
a la salida string 'bar' (length=3)
lugar. Agarrando en popotes, __CLASS__
y get_class()
todos producen el mismo resultado. Parece que no puedo encontrar nada más en la documentación de PHP que me ayude con este problema, pero espero estar pasando por alto algo.
¿Cómo se obtiene la llamada aliased clase cuando se utiliza class_alias?
Yo personalmente recomendaría simplemente no hacer alias en la clase. Solo va a terminar en lágrimas. – GordonM
No puede hacerlo a menos que use el método horrendous debug_backtrace() ... bar :: test() no llama a prueba() en la clase de barra, que es un duplicado o clon de la clase foo; está llamando a prueba() en la clase foo, que también tiene un alias de barra, así que naturalmente get_called_class() devuelve "foo". –
Dup http://stackoverflow.com/questions/6245705/get-top-level-class-name-when-inheritance-and-class-alias-is-used – CBusBus