假设我们有包含php/common.php
的索引页面。
foreach (glob("functions/*.php") as $filename)
{
include $filename;
}
以上代码位于common.php
。因此,index.php
包含common.php
,并且常见内容必须包含functions
文件夹中与common.php
位于同一文件夹中的所有文件
当我尝试从php/functions
调用某个函数(位于index.php
文件夹中的一个文件中)时收到错误消息Call to undefined function
。改为使用下面的代码(测试foreach循环是否有任何问题)
include "functions/ipdetect.php";
得到了结果。那么为什么foreach在我的情况下不起作用?也许php会在将common.php
纳入index.php
?
答案 0 :(得分:2)
对于初学者,您应该使用include_once
它会阻止您包含两次导致更多错误,并且轻微的开销几乎没有。
foreach (glob("functions/*.php") as $filename)
{
include_once $filename;
}
根目录下或“php”文件夹下的“functions”文件夹是常见的吗?如果在php下你需要这个改变:
foreach (glob("php/functions/*.php") as $filename)
{
include_once $filename;
}
编辑删除了错误的解释 - 阅读达伦厨师评论:
@DEVastor直接包含有效,因为你的glob()不起作用,而不是你的include()。
答案 1 :(得分:2)
适合我(见下面的代码 - 这些是完整的文件)。 从命令行运行“php index.php”输出“Hello World!”。 提示:将一些全局代码放在其中一个文件中(参见下面的a.php;取消注释回声)。那应该告诉你文件是否被包含在内。 正如其他人所说的那样,BTW总是使用include_once,除非你有充分的理由不这样做。
--- index.php ----
<?php
include "common.php";
echo f()."\n";
?>
--- common.php ---
<?php
foreach (glob("functions/*.php") as $filename)
{
include $filename;
}
?>
--- functions / a.php ---
<?php
//echo "*** In a.php ***\n";
function f(){
return "Hello World!";
}
?>