2009-07-30 14 views
4

首先,一些背景知識。在我工作的公司使用了大量的功能 /類庫,它被包括每一個頁面上。成千上萬的函數,其中90%可能甚至不會在頁面上調用。自動加載功能所需/類庫時

在試圖減輕服務器的負載一點點,我一直在嘗試用更聰明的庫設置。爲此,我已將整個文件拆分爲分類庫文件(即sql.functions.php,date.functions.php等)。

不幸的是,包括每個頁面上的每個文件都無濟於事根本不可能,並且有選擇地包含文件幾乎是不可能的並且非常容易出錯。

我正在尋找的是類似PHP的___autoload()功能,可自動搜索未知的類開始的情況下,特別命名的文件,試圖找到它的設置。

<?php 
    function ___autoload($class_name) { 
    require_once($class_name.'.class.php'); 
    } 
?> 

但是,此函數不適用於函數調用,僅適用於類。

當調用未定義的函數(即html_insert_button();)時,是否有辦法指示PHP自動查找幷包含命名函數庫?

(在上述情況下,html_functions.php將需要加載,因爲這股函數的前綴)

+2

如果使用APC,就可以大大降低包括這些文件的開銷。除此之外,你最好的選擇就是將這些函數轉換成類(你可以將它們變成靜態的,這樣你可以幾乎相同地調用它們),所以你可以利用自動加載。 – 2009-07-30 20:13:47

回答

4

我不相信有一種方法可以自動加載功能很遺憾。一些人認爲在SitePoint forums這個問題。

我一想這將是一個真棒此外,因爲它會讓你減少inlcudes量。

我把這個方法來加載我的功能,非常類似於CodeIgniter的:

每當我去使用一組功能,我會打電話給庫(「HTML」)的功能,那將包括庫我即將使用(確保它只包含一次)。

 
function library($name) 
{ 
    include($name .".lib.php"); 
} 

很可能不是你正在尋找的答案,但這就是我的方式。

+1

感謝您的意見。不幸的是,你是對的,這不是我希望聽到的,但至少我知道開始尋找替代品。我喜歡你的想法,並可能爲自己使用它。 – Duroth 2009-07-31 06:15:49