Как получить имя файла, из которого класс был включен в PHP - PullRequest
2 голосов
/ 14 января 2009

Я понимаю, что вопрос довольно сложный для понимания, я не знал, как его лучше задать, поэтому я буду использовать этот пример кода, чтобы прояснить ситуацию:
Если у меня есть следующие файлы:

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
 }
?>

класс / myClass.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;
  }
?>

магическая константа FILE не верна, она возвращает путь / к / myClass.php

Ответы [ 3 ]

4 голосов
/ 14 января 2009

, если вам нужно получить "test.php", см. $_SERVER['SCRIPT_NAME']

2 голосов
/ 27 сентября 2010

Я использую

$arr = @debug_backtrace(false);
if (isset($arr))
foreach ($arr as $data)
{
 if (isset($data['file']))
 echo $data['file'];
 // change it to needed depth
}

Таким образом, вам не нужно изменять файл, из которого ваш файл включен. У debug_backtrace могут быть некоторые совпадения по скорости.

2 голосов
/ 14 января 2009

Я закончил, используя:

$file = basename(strtolower($_SERVER['SCRIPT_NAME']));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...