[英]PHP include/require inside functions
拥有相当大的函数并且每次加载页面时都会加载它们,最好编写function foo(){ include(.../file_with_function's_code); return; }
function foo(){ include(.../file_with_function's_code); return; }
function foo(){ include(.../file_with_function's_code); return; }
最小化函数脚本的大小? 或者无关紧要,因为当一个函数被加载(但没有执行)时,即使它被包含在内,也会加载内容? 谢谢。
(编辑:我的问题不是关于它是否可能)
虽然@Luceos答案在技术上是正确的(最好的正确),但它没有回答你问的问题,即更好地做到这一点,还是包括无论函数调用发生的事情?
我用最基本的方式测试了这个(OP,为什么不是你?):
<?php
echo "Testing...";
function doThing() {
include nonExistantFile.php;
}
//doThing();
echo "Done testing.";
结果:
如果我打电话给doThing();
我收到一个未找到文件的警告。
如果我注释掉doThing();
......没有错误! 这样你就可以节省文件加载时间。
或者,作为一个很好的替代方案,将您的函数封装在类中,并从__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
将加载文件,但不会在此之前加载。
是的,这是可能的; 见http://www.php.net/manual/en/function.include.php
如果include发生在调用文件中的函数内部,则调用文件中包含的所有代码将表现为就好像已在该函数内定义的那样。 因此,它将遵循该函数的可变范围。
问题是,为什么不将周围的函数定义添加到包含的文件中。 我认为在函数中包含的唯一可行理由是将该函数中的代码分成位。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.