2009-04-09 59 views
2

我想使用我的功能,例如DebugR(),但我不想使用require或include(包含include_path)加載包含源代碼的函數文件。如何在不加載源文件的情況下使用php函數?

我知道我可以使用自動加載,但是這個動作必須在我的php配置中是通用的。我認爲我必須創建一個PHP擴展,但有另一種方法嗎?

+0

謝謝吉姆·普爾斯,我會記住編輯如何futurs問題 – 2009-04-09 19:09:44

回答

5

有一個PHP配置行,你可以做。

文檔說這個:

的auto_prepend_file串

Specifies the name of a file that is automatically parsed before the main file. The file is included as if it was called with the require() function, so include_path is used. 

The special value none disables auto-prepending. 
0

沒有構建擴展,或自動加載一類函數或直接要求函數進入頁面,或將函數寫入同一個文件,我敢肯定,沒有一種方法,沒有調整你的PHP組態。

出於好奇,有什麼理由不想做任何這些事情?

0

爲什麼不使用加速器將代碼緩存爲內存中的BC?
您仍然需要編寫「include」指令。
如果擴展名是你的頭,那麼從任何可用的開源加速器中分離出來。

0

唯一可行的方式做到這一點是使用自動加載這樣的:

// your_file.php 
function __autoload($class) 
{ 
    require_once('./classes/' . $class . '.php'); 
} 

echo _::Bar(); 
var_dump(_::DebugR()); 
echo _::Foo(); 

// ./classes/_.php 
class _ 
{ 
    function Bar() 
    { 
     return 'bar'; 
    } 

    function DebugR() 
    { 
     return true; 
    } 

    function Foo() 
    { 
     return 'foo'; 
    } 
} 

當然,每一個功能會存儲在這個_類裏面。

另一種選擇,如果你是從一個對象中工作是使用__call()魔術方法,做一些事情,如:

return $this->DebugR(); 
+0

「我知道我可以使用自動加載,但此操作必須是通用的「 我不想使用自動加載。閱讀投票答案,這是問題的最佳答案。 – 2009-04-10 16:04:44

相關問題