1

我开始学习 PHP 和 OOP,但我陷入了困境。我在下面粘贴了 3 个不同的 php 文件。代码后说明了特定问题:

文件1.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";
?>

文件2.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 并加载此页面,回声就会起作用。

我想这很明显,但我还没有能力弄清楚。

提前感谢您的回复并阅读到最后!!!:)

4

1 回答 1

1

因为你的包含在函数的范围内,所以在包含中定义的变量只在函数内部可见。

function test($page){
    switch( $page) {
        case "A":
            include "file1.php";
            // $TD is in scope here, but not outside this scope
        break;
    }
}

快速解决方法是在函数global $TD;顶部添加。test()

于 2013-06-30T19:44:42.717 回答