PHP模板和变量范围

时间:2016-07-22 06:20:26

标签: php model-view-controller templating

我试图找到一种方法将非全局变量传递给包含的文档。

page1.php中

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

使page2.php

echo $tst;

如何让变量可见?我将如何做这个PHP模板,所以我可以拆分页面正文和页脚的html页面。就像在wordpress中它有自定义wp函数,但我没有看到他们声明外部文件使用它们。

提前非常感谢。

2 个答案:

答案 0 :(得分:1)

我认为你并不完全了解正在发生的事情。第1页应该是回应。因此,您包含第2页,现在可以使用foo函数。你需要调用它以便它实际执行。使用global关键字将全局变量引入函数范围。然后你可以回应它。

1页:

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

第2页:

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

}

答案 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";

我希望这能使事情变得更清楚。