2013-06-02 61 views
1

我有以下程序結構:PHP需要/ include文件

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 

根的index.php:

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

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

$a = "I am a variable"; 

要求( './ TPL/index.php文件');

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自己。我不明白問題是什麼。你認爲這裏的問題是什麼?

回答

4

你的問題可能只是一個函數的作用域不會自動包含全局變量。嘗試設置$a全球像global $a;,下面的例子爲您get_header()功能:

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

3Q!現在看來只能使用全局。 – user2427932

1

使用包括內部的功能包括直接在該函數的代碼。因此該變量是該函數中的一個本地可訪問變量 - 它不在函數之外設置。

如果您需要/包含沒有函數$ a變成全局變量。

0

使您的變量爲全球

global $ YourVar;