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

Foi útil?

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
scroll top