我想使用我的功能,例如DebugR()
,但我不想使用require或include(包含include_path
)加載包含源代碼的函數文件。如何在不加載源文件的情況下使用php函數?
我知道我可以使用自動加載,但是這個動作必須在我的php配置中是通用的。我認爲我必須創建一個PHP擴展,但有另一種方法嗎?
我想使用我的功能,例如DebugR()
,但我不想使用require或include(包含include_path
)加載包含源代碼的函數文件。如何在不加載源文件的情況下使用php函數?
我知道我可以使用自動加載,但是這個動作必須在我的php配置中是通用的。我認爲我必須創建一個PHP擴展,但有另一種方法嗎?
有一個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.
沒有構建擴展,或自動加載一類函數或直接要求函數進入頁面,或將函數寫入同一個文件,我敢肯定,沒有一種方法,沒有調整你的PHP組態。
出於好奇,有什麼理由不想做任何這些事情?
爲什麼不使用加速器將代碼緩存爲內存中的BC?
您仍然需要編寫「include」指令。
如果擴展名是你的頭,那麼從任何可用的開源加速器中分離出來。
唯一可行的方式做到這一點是使用自動加載這樣的:
// 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();
「我知道我可以使用自動加載,但此操作必須是通用的「 我不想使用自動加載。閱讀投票答案,這是問題的最佳答案。 – 2009-04-10 16:04:44
謝謝吉姆·普爾斯,我會記住編輯如何futurs問題 – 2009-04-09 19:09:44