Como chegar filename a partir do qual classe foi incluído no PHP
Pergunta
Eu entendo que a questão é um pouco difícil de entender, eu não sabia como pedir-lo melhor, então eu vou usar este exemplo de código para tornar as coisas mais claras:
Se eu tiver os seguintes arquivos:
test.php:
<?php
include('include.php');
echo myClass::myStaticFunction();
?>
include.php
<?php
__autoload($classname){
include_once("class/".$classname.".php"); //normally checking of included file would happen
}
?>
class / Minhaclasse.php
<?php
class myClass{
public static function myStaticFunction(){
//I want this to return test.php, or whatever the filename is of the file that is using this class
return SOMETHING;
}
?>
a constante mágica arquivo não é o correto, ele retorna path / to / Minhaclasse.php
Solução
em caso de necessidade de obter "test.php" ver $_SERVER['SCRIPT_NAME']
Outras dicas
Acabei usando:
$file = basename(strtolower($_SERVER['SCRIPT_NAME']));
Eu estou usando
$arr = @debug_backtrace(false);
if (isset($arr))
foreach ($arr as $data)
{
if (isset($data['file']))
echo $data['file'];
// change it to needed depth
}
Desta forma, você não precisa modificar o arquivo a partir do qual o arquivo está incluído. debug_backtrace pode ter algumas consenquencies velocidade.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow