带有包含文件

时间:2016-03-24 23:58:26

标签: php include

基本上我能够通过的方法是回显一个变量,它包含来自包含文件的变量。

解释

我有3个文件:

index.php
system/functions.php
system/config.php

每个文件都包含另一个文件,因此它们像一个文件一样工作(索引除外)

system / functions.php 包含:

include_once $_SERVER['DOCUMENT_ROOT'].'/system/config.php';
include_once $_SERVER['DOCUMENT_ROOT'].'/system/connection.php';

system / config.php 包含:

include_once $_SERVER['DOCUMENT_ROOT'].'/system/functions.php';
include_once $_SERVER['DOCUMENT_ROOT'].'/system/connection.php';

它没有任何问题,它们可以毫无问题地一起工作,它们可以成功地在它们之间传递变量。的 BUT

当我想:

echo $message;

index.php 上,输出只是变量中的字符串,从包含的文件中跳过其他变量...

在这种情况下, functions.php 文件包含

$message = $varfromconfig."Some String";

config.php 包含

$varfromconfig = "someword ";

当我回显$message索引页面时,只返回字符串 Some String,没有配置变量...为什么? (应该返回someword Some String

谢谢。

当然,index.php包含配置和函数......

include_once 'system/config.php';
include_once 'system/connection.php';
include_once 'system/functions.php';

1 个答案:

答案 0 :(得分:0)

在index.php执行此操作:

//include_once 'system/config.php'; remove this include from index.php
include_once 'system/connection.php';
include_once 'system/functions.php';

,请执行以下操作:

include_once 'system/config.php'; remove this include from index.php
include_once 'system/connection.php';
include 'system/functions.php'; //not include_once

插入两者时都有一个循环。我想你在 config.php functions.php 之间的关系可能比你在这里写的更复杂,所以我会尝试详细说明发生了什么,这样你就可以找到另一个解决方案,如果需要的话。

在您运行 index.php 之后,它会调用 config.php 。然后,在 config.php 内,会发生这种情况:

config.php 插入 functions.php ,然后 functions.php 插入 config.php config.php 再次插入 funtions.php ,这将永远保留。所以php解释器只是在它发生之前打破循环并且仅从 config.php 中导入 functions.php ,但是不要导入 config.php 来自 config.php 内的 functions.php 内部。 (该死的开始)

所以现在我们刚刚通过了 index.php 的第1行,并从 index.php 导入了第一个 config.php ,然后<来自 config.php 的strong> functions.php 。解释器首先使用红色 functions.php ,加载其变量,然后转到 config.php 并加载其变量。

因此,首先来自 functions.php ,它会运行$message = $varfromconfig."Some String";。一旦 config.php 尚未解释且$ varfromconfig仍然为空,它会将“Some String”分配给$message。然后它运行$varfromconfig = "someword ";,但没有将其分配给$message,因为$ message赋值已经完成。

在第二行,导入connections.php,然后在第三行尝试导入 functions.php ,但已插入 functions.php 。所以include_once不允许导入它。

要解决此问题,一旦 functions.php 中的变量需要 config.php 首先运行,您只需要 functions.php index.php 并让 functions.php 自行调用 config.php 。另一个解决方案是使用include而不是include_once来插入 functions.php 并让它被解释两次。