我有一些看起来大致像这样的PHP代码
require_once 'cache.php';
require_once 'generator.php';
if (cache_dirty ('foo')) {
cache_update ('foo', generate_foo ());
}
print cache_read ('foo');
我的问题是generator.php
包含了大量的库,除非cache_dirty
在运行时实际返回false
,否则我不想加载/解析它。
我知道PHP预编译器可以提供帮助但是现在我需要快速修复。这可能吗?
答案 0 :(得分:6)
require_once 'cache.php';
if (cache_dirty ('foo')) {
require_once 'generator.php';
cache_update ('foo', generate_foo ());
}
print cache_read ('foo');
很好地解决你的问题......
答案 1 :(得分:5)
正如PeeHaa在评论中已经说过,Autoloading通常是理想的方式(尽管它需要重组您的应用。)
然而,在你展示的情况下,我不确定是什么阻止你做
require_once 'cache.php';
if (cache_dirty ('foo')) {
require_once 'generator.php';
cache_update ('foo', generate_foo ());
}
答案 2 :(得分:2)
您应该编写一个PHP __autoload
函数,以便在找到generator.php
电话时动态要求generate_foo
。
答案 3 :(得分:1)
只需在generator.php
块中添加/ require if
即可。此外,在函数调用中,函数名和(
之间不应有空格。
答案 4 :(得分:1)
如果您的代码是OO(面向对象),那么您应该使用PHP的__autoload()
功能。
否则,只需使用条件require_once()
s。