2012-02-14 96 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。

相关问题