Я пытаюсь найти способ передачи неглобальных переменных во включенный документ.
page1.php
function foo()
{
$tst =1;
include "page2.php";
}
page2.php
echo $tst;
Как я могу сделать эту переменную видимой? и как бы я сделать это php шаблонизатор, чтобы я мог разделить тело заголовка и нижнего колонтитула для HTML-страниц. Как и в WordPress он имеет пользовательские функции WP, но я не вижу, чтобы они объявляли внешние файлы для их использования.
большое спасибо заранее.
Я думаю, что вы не совсем понимаете, что происходит. Страница 1, вероятно, должна делать эхо. Таким образом, вы включаете страницу 2, и функция foo теперь доступна. Вам нужно вызвать его так, чтобы он действительно выполнялся. Используйте ключевое слово global, чтобы ввести глобальную переменную в область действия функции. Тогда вы можете повторить это.
Страница 1:
include "page2.php";
foo();
echo $test;
страница 2:
function foo()
{
global $test;
$test =1;
}
Переменные в функции не видны вне их, когда они не являются глобальными. Но включение во функцию должно быть видно во втором файле.
$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";
Я надеюсь, что это сделало вещи более ясными.