¿Cómo obtener la ruta de la clase actual, desde un método heredado?¿Cómo obtener la ruta de acceso de una clase derivada de un método heredado?
Tengo el siguiente:
<?php // file: /parentDir/class.php
class Parent {
protected function getDir() {
return dirname(__FILE__);
}
}
?>
y
<?php // file: /childDir/class.php
class Child extends Parent {
public function __construct() {
echo $this->getDir();
}
}
$tmp = new Child(); // output: '/parentDir'
?>
La constante __FILE__
siempre apunta a la fuente de archivo del archivo que se encuentra, independientemente de la herencia.
Me gustaría obtener el nombre de la ruta para la clase derivada.
¿Hay alguna elegante forma de hacer esto?
Podría hacer algo en la línea de $this->getDir(__FILE__);
, pero eso significaría que tengo que repetirme con bastante frecuencia. Estoy buscando un método que ponga toda la lógica en la clase principal, si es posible.
Actualización:
solución aceptada (por Palantir):
<?php // file: /parentDir/class.php
class Parent {
protected function getDir() {
$reflector = new ReflectionClass(get_class($this));
return dirname($reflector->getFileName());
}
}
?>
sí, esta es la conclusión lógica con la respuesta de Palantir. – Jacco