如果函数非常大并且每次加载页面时都会加载,那么编写function foo(){ include(.../file_with_function's_code); return; }
以最小化函数脚本的大小会更好吗?或者无关紧要,因为当一个函数被加载(但没有执行)时,即使它被包含在内,也会加载内容?谢谢。
(编辑:我的问题不在于是否可能)
答案 0 :(得分:19)
虽然@Luceos答案在技术上是正确的(最好的正确),但它没有回答你提出的问题,即更好地做到这一点,还是包括无论函数调用都包含?
我用最基本的方式测试了这个(OP,为什么不是你?):
<?php
echo "Testing...";
function doThing() {
include nonExistantFile.php;
}
//doThing();
echo "Done testing.";
结果:
如果我拨打doThing();
,我会收到一个未找到文件的警告。
如果我评论doThing();
...则没有错误!因此,您可以通过执行此操作来节省文件加载时间。
答案 1 :(得分:11)
或者,作为一个好的选择,将您的函数封装在类中,并从__autoload
中受益:
function __autoload($class_name) {
include $class_name . '.php';
}
将myBigFunction()
封装在类
class myBigFunction {
public static function run() {
//the old code goes here
}
}
将其另存为myBigFunction.php
当您在类上调用该函数作为静态方法时:
myBigFunction::run()
__autoload
将加载文件,但不会加载。
答案 2 :(得分:4)
是的,这是可能的;见http://www.php.net/manual/en/function.include.php
如果include发生在调用文件中的函数内,那么 调用文件中包含的所有代码都将表现得像它一样 已在该功能内定义。所以,它将遵循变量 该职能的范围。
问题是,为什么不将周围的函数定义添加到包含的文件中。我认为在函数中包含的唯一可行理由是将该函数中的代码分成位。
答案 3 :(得分:2)