可能重複:
php: determine where function was called from如何在特定文件中調用函數行爲的方式不同?
我有一個自動加載功能my_function($class)
,可以被任何腳本調用。它由PHP的spl_autoload_call()
調用,並且可以在任何地方發生。我如何編寫my_function($class)
來檢測特定$file
何時調用它?
喜歡的東西:
$file = '/htdocs/project/whatever.php';
if ($caller_file == $file) {
...
如何找到$caller_file
? 我的確明白這個問題令人困惑,但我現在不能說出更好的話。所以,如果你有任何問題的理解,請在評論中告訴我。
編輯(上下文)如果自動加載器加載的文件與自動加載器的調用方式相同,我想讓腳本加載不同的類文件。
例如給:
namespace Something;
class Random extends Random {}
應該不會加載本身,而是一個不同的文件中,我們有:
namespace Something;
class Random { ... }
換句話說:
如果我定義什麼MyName\Class
在a/class.php
,我想用MyName\Class extends \MyName\Class
(在a/class.php
之內)進行擴展,但我希望自動加載器看起來像當在a/class.php
內詢問時,在的b/class.php
?
@hakre,我試着回溯下面的腳本,但是'random.php'(隨機文件)在調用自身時從來不會出現在回溯中。 – Shoe 2012-04-26 12:04:04
您的代碼在使用回溯的問題中在哪裏?我沒看到它。 – hakre 2012-04-26 12:06:07
我在'$ debug ='debug = debug_backtrace()''出來的'$ debug'的自動加載器腳本中做了'var_dump()'。沒有我想要的調用者文件,因爲當他到達'a/random.php'時,自動加載器再次要求'a/random.php'(因爲Random隨機)導致PHP「類未找到」錯誤。相反,我希望autoloader腳本在'a/random.php'內調用Random時加載'b/random.php'。你明白嗎? – Shoe 2012-04-26 12:09:20