包括整个php目录

时间:2011-11-10 23:25:43

标签: php include foreach directory

假设我们有包含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

后触发

2 个答案:

答案 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!";
}
?>