2012-02-14 105 views
3

我有一些PHP代碼看起來大致是這樣的只在需要時才運行時

require_once 'cache.php'; 
require_once 'generator.php'; 

if (cache_dirty ('foo')) { 
    cache_update ('foo', generate_foo()); 
} 

print cache_read ('foo'); 

我的問題是generator.php包括圖書館的整體質量,我不希望加載包含PHP文件/解析它除非cache_dirty實際上在運行時返回false

我知道有PHP預編譯器可以幫助,但現在我需要一個快速修復。這可能嗎?

+3

看看[自動加載](http://php.net/manual/en/language.oop5.autoload.php)你的東西。 – PeeHaa 2012-02-14 13:17:35

+0

感謝您提及自動加載,這當然是正確的長期解決方案。 – spraff 2012-02-14 13:48:33

回答

6
require_once 'cache.php'; 

if (cache_dirty ('foo')) { 
    require_once 'generator.php'; 
    cache_update ('foo', generate_foo()); 
} 

print cache_read ('foo'); 

適合你的問題非常好...

2

當發現generate_foo調用時,您應該編寫一個PHP __autoload函數來動態地要求generator.php

4

由於PeeHaa在他的評論中已經說過,Autoloading通常要理想的方式(儘管這將需要重組你的應用程序。)

然而,在你展示的情況下,我不確定你在做什麼

require_once 'cache.php'; 


if (cache_dirty ('foo')) { 
    require_once 'generator.php'; 
    cache_update ('foo', generate_foo()); 

} 

+0

難道你沒有錯誤的順序? – Borealid 2012-02-14 13:29:54

+0

@Borealid真實!謝謝。 – 2012-02-14 14:58:00

1

只需在if區塊中包含/需要generator.php。另外,在功能調用中,功能名稱和(之間不應有空格。

1

如果您的代碼是OO(面向對象),您應該使用PHP的__autoload()功能。

否則,只需使用條件require_once() s。

相關問題