2014-09-25 84 views
0

讓我們假設我有以下 class.wrapper.php獲取當前文件名包含在PHP

// loop through events/ directory ($eventFile = filename of parsed file) 
include $eventFile; 

myevent.php

echo __FILE__; 

myotherevent.php

echo __FILE__; 

這兩個回聲返回相同的東西:class.wrapper.php,有沒有辦法獲得真正的文件名?不是包含代碼的那個?

class.wrapper是加密API,它允許用戶在給定的目錄調用當給定事件中的主應用程序被觸發用戶定義的代碼定義自定義PHP文件的一部分,所以無法編輯主我只能通過編輯「事件」文件來做到這一點

+0

奇怪。根據http://php.net/manual/en/language.constants.predefined.php上的文檔,__FILE__魔術常量應該返回包含文件的名稱。 – sebbo 2014-09-25 11:25:57

+0

這就是我的想法,問題是我正在使用第三方代碼(加密),它允許我填寫'事件'php文件來執行第三方代碼時,他們被解僱,所以我不知道如果他們正在使用包含,但看起來是最邏輯的事情 – kitensei 2014-09-25 11:34:48

回答

0

如果你想獲取真實姓名,例如訪問此文件的完整路徑,請使用函數realpath("yourfile.extension")

我讓你用這個簡單的例子:

比方說,我有一個的index.php文件名爲。我想顯示它的完整路徑。下面是代碼這樣做:

<?php 
    echo realpath("index.php"); 
?> 

在我的例子,我救了我的C文件:\ XAMPP \ htdocs中\測試\的index.php。結果將顯示此確切路徑。

希望它有幫助。

+0

我無法編輯包裝類,它是一個API加密,它在一個給定的目錄中包含一些文件dinaph3 – kitensei 2014-09-25 11:35:42

+0

來自哪個API?它有任何文檔嗎?讓我知道這一點,以嘗試找到像上面這樣的功能。 – 2014-09-25 11:43:45

+0

我不認爲光文檔會幫助你,但在這裏是https://dev.hostbillapp.com/events-hooks – kitensei 2014-09-25 11:47:41

1

嘗試以下功能

function GetInclude($file, $params = array()) 
    { 
     extract($params); 
     include $file; 
    } 
    myevent.php 
    <?php GetInclude('class.wrapper.php', array('includerFile' => __FILE__)); ?> 
    myotherevent.php 
    <?php GetInclude('class.wrapper.php', array('includerFile' => __FILE__)); ?> 
    class.wrapper.php 
    echo $includerFile;