【问题标题】:Include whole php directory包含整个 php 目录
【发布时间】:2011-12-26 15:13:42
【问题描述】:

假设我们有一个包含php/common.php 的索引页面。

foreach (glob("functions/*.php") as $filename)
{
    include $filename;
}

上面的代码位于common.php。所以index.php 包括common.php 并且common 必须包括来自functions 文件夹中的所有文件,这些文件与common.php 位于同一文件夹中

当我尝试从index.php 调用某些函数(位于php/functions 文件夹的文件之一中)时,收到错误消息Call to undefined function。改用下面的代码(测试foreach循环是否有问题)

include "functions/ipdetect.php";

得到结果。那么为什么 foreach 在我的情况下不起作用?也许php在将common.php引入index.php之后触发foreach?

【问题讨论】:

  • include("$filename."."php");你试过吗?或者你甚至回显了 $filename 吗?以前从未使用过 glob(),只是一个问题。
  • 您是否尝试过在包含之前回显文件名,以便知道您的 foreach 是否真的有效以及包含哪些文件?
  • 什么都没有。再一次:common.phpfunctions 文件夹位于名为 php 的同一文件夹中。所以根文件夹看起来像index.php; phpphp 文件夹的内容类似于 common.php; functions

标签: php include foreach directory


【解决方案1】:

对于初学者,您应该使用include_once,它会阻止您包含两次导致更多错误的内容,并且较小的开销几乎没有。

foreach (glob("functions/*.php") as $filename)
{
    include_once $filename;
}

是根目录下的“functions”文件夹还是common所在的“php”文件夹下?如果在 php 下,您将需要此更改:

foreach (glob("php/functions/*.php") as $filename)
{
    include_once $filename;
}

编辑删除了不正确的解释 - 阅读 darren cooks cmets:

@DEVastor 直接包含有效,因为它是您的 glob() 不起作用,而不是您的 include()。

【讨论】:

  • common.phpfunctions 文件夹位于名为 php 的同一文件夹中。所以根文件夹看起来像index.php; phpphp 文件夹的内容看起来像 common.php; functions
  • 啊,是的 - 刚刚注意到,看看我的更新,我认为它会解决你的问题!
  • 好的。更新了它对我有用的代码广告。但是为什么我需要从根文件夹放置路径?
  • 所有“包含”的文件都包含在您的index.php 文件及其路径中,因此所有子包含都需要讨论与该文件相关的路径而不是它们本身。这通常是为什么框架会存储一个或两个常量,其中包含要使用的文档根和应用程序根路径,而不是希望目录结构永远不会改变。
  • @DEVAstor 直接包含有效,因为它是您的 glob() 不起作用,而不是您的 include()。
【解决方案2】:

为我工作(见下面的代码 - 这些是完整的文件)。 从命令行运行“php index.php”会输出“Hello World!”。 提示:将一些全局代码放入其中一个包含的文件中(参见下面的 a.php;取消注释 echo)。这应该告诉您该文件是否被包含在内。 顺便说一句,正如其他人所说,除非您有充分的理由不这样做,否则请始终使用 include_once。

--- index.php ----

<?php
include "common.php";
echo f()."\n";
?>

--- common.php ---

<?php
foreach (glob("functions/*.php") as $filename)
{
    include $filename;
}
?>

--- 函数/a.php ---

<?php
//echo "*** In a.php ***\n";
function f(){
return "Hello World!";
}
?>

【讨论】:

  • 哦.. 听我说 common.phpfunctions 文件夹位于名为 php 的同一文件夹中。所以根文件夹看起来像index.php; phpphp 文件夹的内容看起来像 common.php; functions
猜你喜欢
  • 1970-01-01
  • 2011-04-15
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
  • 2012-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多