应要求“U一次”;“some file.php”;是否显示在文件顶部以外的任何位置?
下面的示例是否适合PHP的require_once构造应要求“U一次”;“some file.php”;是否显示在文件顶部以外的任何位置?,php,Php,下面的示例是否适合PHP的require_once构造 function foo( $param ) { require_once "my_file.php" ; // // do something here } 还是在文件的开头只包含require_once构造更合适 即使要包含的文件仅在函数的上下文中有用,但为了可读性和可维护性,是否最好在顶部包含该文件?可能您只在某些情况下需要包含的文件,如果它是一个大文件,如果您根本不需要它,您希望避免包含它。因此,我想你可以
function foo( $param )
{
require_once "my_file.php" ;
//
// do something here
}
还是在文件的开头只包含require_once构造更合适
即使要包含的文件仅在函数的上下文中有用,但为了可读性和可维护性,是否最好在顶部包含该文件?可能您只在某些情况下需要包含的文件,如果它是一个大文件,如果您根本不需要它,您希望避免包含它。因此,我想你可以在
if-else
语句的一个分支中使用require\u一次。就我个人而言,我将所有的require_once
语句都放在文件的最上面,这样我就可以很容易地看到哪些文件包含在哪里,没有什么比那些隐藏的语句更糟糕的了,包括弄乱脚本。但是,如果您有几个大型必需脚本,而这些脚本仅是某些函数所必需的,那么从性能角度来看,将require\u放入函数中一次就可以了,只需确保在页面顶部添加注释即可
<?php
//require_once "my_file.php" (see function foo)
function foo($param) {
require_once "my_file.php";
}
如果你不想加载一个文件,除非它是需要的,那就通过查看更新的PHP。这是一场宗教辩论
的PRO要求
和在文件顶部包含
语句:
依赖关系清楚地记录在一致可靠的地方
提高可读性/可维护性
OP代码缓存更简单(尽管您可能认为这不会直接影响开发人员)
的CONS要求
和在文件顶部包含
语句:
如果您正在执行某种动态运行时,包括(例如使用_autoload()),则不可能在文件顶部执行硬编码语句
如果代码中只有一个执行路径使用include,那么每次都无条件地包含它是对资源的浪费
include
或require
语句的长列表只是开发人员在编辑文件时必须滚动过去的噪音。当然,一长串的依赖项可以被看作是代码应该被分解成更小、更集中的部分的标志,因此,也许你可以将这一部分作为专业人员来处理,因为它会让代码的味道更加突出
使用require_时,请记住这不是某个预处理器指令。require_once语句是在PHP运行代码时执行的,只有在执行过程中尚未包含特定脚本时才会执行
例如:
conf.php:
<?php
$maxAge = 40;
?>
myscript.php
<?php
function foo($age) {
require_once("conf.php");
if($age > $maxAge)
return "1";
else
return "0";
}
echo foo(30); // Echos 1
echo foo(30); // Echos 0
?>
对foo(..)的第二次调用没有执行require_once,因为conf.php已经包含一次 @tj111:注释掉的代码(如您在回答中发布的代码片段)的一个潜在问题是,如果一些维护程序员更新foo()
并删除对my_file.php
的依赖,他们可能不知道更新文件顶部的注释。然后,这个评论就会挂在那里,并且对每一个未来的程序员来说都是“谎言”。@Asph:我同意你的观点,个人不会因为这个原因而以我推荐的方式考虑我的代码。我的意思是,如果在每次通话中都包含文件存在严重问题(如性能),那么这是一种退路,我个人从未遇到过这个问题。