2016-07-22 2 views
0

Я пытаюсь найти способ передачи не глобальных переменных в включенный документ.PHP templating и область переменной

page1.php

function foo() 
{ 
    $tst =1; 
    include "page2.php"; 
} 

page2.php

echo $tst; 

Как я могу сделать эту переменную быть виден? и как я могу сделать это php templating, чтобы я мог разделить заголовок и нижний колонтитул для html-страниц. как в wordpress, у него есть пользовательские функции wp, но я не вижу, чтобы они объявляли внешние файлы для их использования.

большое спасибо заранее.

+1

'page2.php' должен включать' page1.php', а не наоборот или просто использовать переменные сеанса –

ответ

1

Я думаю, что вы не совсем понимаете, что происходит. Вероятно, страница 1 должна повторять эхо. Таким образом, вы включаете страницу 2, и теперь функция foo доступна. Вам нужно вызвать его так, чтобы он выполнялся на самом деле. Используйте глобальное ключевое слово для переноса глобальной переменной в область функций. Тогда вы можете повторить это.

стр.1:

include "page2.php"; 
foo(); 
echo $test; 

страница 2:

function foo() 
{ 
    global $test; 
    $test =1; 

} 
0

переменные в функции не видны снаружи, когда они не являются глобальными. Но включение внутри функции должно быть видно во втором файле.

$test="Big thing"; 
echo "before testFoo=".$test; 

// now call the function testFoo(); 

testFoo(); 

echo "after testFoo=".$test; 
Result : *after testFoo=Big thing* 

function testFoo(){ 

    // the varuiable $test is not known in the function as it's not global 

    echo "in testFoo before modification =".$test; 

    // Result :*Notice: Undefined variable: test in test.php 
    // in testFoo before modification =* 

    // now inside the function define a variable test. 

    $test="Tooo Big thing"; 
    echo "in testFoo before include =".$test; 

    // Result :*in testFoo before include =Tooo Big thing* 

    // now including the file test2.php 

    include('test2.php'); 

    echo "in testFoo after include =".$test; 

    // we are still in the function testFoo() so we can see the result of test2.php 
// Result :in testFoo after include =small thing 

    } 

в test2.php

echo $test; 
/* Result : Tooo Big thing 
    as we are still in testFoo() we know $test 
    now modify $test 
*/ 
$test = "small thing"; 

Я надеюсь, что сделал все более ясным.

Смежные вопросы