我开始学习PHP和OOP而且我被困住了。我有3个不同的PHP 我在下面粘贴的文件。在代码之后陈述了特定的问题:
File1.php:
<?php
class Page{
public $intro;
public $article;
}
$TD = new Page($intro, $article);
$TD->intro="I'm the intro";
$TD->article="I'm an article";
?>
File2.php
<?php
function test($page){
switch($page){
case "A":
include "file1.php";
break;
case "B":
include "anotherfile.php";
break;
}
}
?>
File3.php(必须打印的东西):
<?php
$page="A";
include "file2.php";
test($page);
echo $TD->intro;
echo $TD->article;
?>
我无法回应(说$ TD是未定义的),但我一直在测试,似乎它正在有效地加载file1.php(其中定义了$ TD对象)。此外,如果我将有问题的回声粘贴到file1.php并加载此页面,则回声起作用。
我认为这是显而易见的,但我还没有能力弄明白。
提前感谢您的回复并阅读此内容! :)
答案 0 :(得分:1)
因为include包含在函数的范围内,所以include中定义的变量只能在函数内部显示。
function test($page){
switch( $page) {
case "A":
include "file1.php";
// $TD is in scope here, but not outside this scope
break;
}
}
快速解决方法是在global $TD;
功能的顶部添加test()
。