PHP需要/包含文件

时间:2013-06-02 14:45:31

标签: php scope

我有以下程序结构:

Root directory:-----index.php
                       |-------TPL directory
                                 |-------------header.php
                                 |-------------index.php
                                 |-------------footer.php
php file loading structure:

Root directory:index.php ----require/include--->tpl:index.php
                                                      |----require/include-->header.php
                                                      |----require/include-->footer.php

Root index.php:

    <?php
function get_header(){
    require('./tpl/header.php');
}

function get_footer(){
    require('./tpl/footer.php');
}

$a = "I am a variable";

需要(&#39; ./ TPL / index.php的&#39);

TPL:index.php的:

    <?php
get_header();//when I change require('./tpl/header.php'); variable $a can work!!
echo '<br />';
echo 'I am tpl index.php';
echo $a;
echo '<br />';
get_footer();//when I change require('./tpl/footer.php'); variable $a can work!!

TPL:header.php文件:

    <?php
echo 'I am header.php';
echo $a;//can not echo $a variable
echo '<br/>';

TPL:footer.php:

    <?php
echo '<br />';
echo $a;//can not echo $a variable
echo 'I am footer';

出于某种原因,当我使用函数来要求header.php和footer.php时,我的变量$ a不会被回显。如果我自己使用header.php或footer.php,它工作正常。我不明白问题是什么。您认为这里的问题是什么?

3 个答案:

答案 0 :(得分:4)

您的问题可能只是函数的范围不会自动包含全局变量。尝试将$a设置为全局,例如global $a;,例如下面的get_header()功能:

function get_header(){
    global $a; // Sets $a to global scope
    require('./tpl/header.php');
}

答案 1 :(得分:1)

在函数内部使用include包含直接在该函数中的代码。因此,变量是该函数可访问变量的局部变量 - 它不在函数外部设置。

如果你需要/包含没有函数$ a成为全局变量。

答案 2 :(得分:0)

将您的变量设为全局

全球$ YourVar;