将PHP变量从一个页面传递到另一个类,再传递到另一个页面

将PHP变量从一个页面传递到另一个类,再传递到另一个页面,php,class,variables,scope,Php,Class,Variables,Scope,我对PHP中的作用域有一个问题 我在一个文件中设置了一个变量。该文件创建一个类的实例,然后调用该类的方法。此方法包含一个单独的文件。我需要知道的是,如何在第二页中引用第一页中的变量,而不必将其作为构造函数变量传递给类 例如: page_1.php <?php $variable = "my variable"; $myClass = new MyClass(); $myClass->loadPage(); ?> MyClass.php <?

我对PHP中的作用域有一个问题

我在一个文件中设置了一个变量。该文件创建一个类的实例,然后调用该类的方法。此方法包含一个单独的文件。我需要知道的是,如何在第二页中引用第一页中的变量,而不必将其作为构造函数变量传递给类

例如:

page_1.php

<?php
    $variable = "my variable";

    $myClass = new MyClass();
    $myClass->loadPage();
?>

MyClass.php

<?php
    Class MyClass
    {
        public function loadPage ()
        {
            include_once('page_2.php');
        }
    }
?>

page_2.php

<?php
    echo $variable;
?>

我听说不赞成使用全局作用域,我确信将变量作为类中的字段放置是不正确的,特别是考虑到文件_1.php中可能有几个不相关的变量,需要在页面_2.php中引用。那么我需要做什么呢


谢谢

将变量作为参数传递给
loadPage()

并更新
loadPage()
的定义以接受参数:

public function loadPage ($variable)
当包含page_2.php时,只需将该脚本中的代码插入当前运行的脚本和作用域中。因此,page_2.php中的代码可以简单地引用
$variable
,而无需任何额外工作


请记住,这里的作用域规则与其他地方的相同,因此,如果在page_2.php中定义类或附件,则必须将$variable显式传递到这些作用域以访问其值。

感谢您的解释,这非常有意义。但我的问题是,根据调用该类的页面,我将有不同数量的变量传递给该类(不包括任何变量)。我怎样才能避开这个问题呢?有没有办法告诉类方法期望零个或多个变量,或者最好传递一个变量数组?(我觉得有点复杂)。将对象的引用传递给类而不是字符串变量怎么样?这些选项中的任何一个似乎都是合理的。要使参数成为可选参数,只需设置默认值:
function loadpage($variable=null)
并在函数中检查其值。如果需要的话,数组可以工作,但我同意它听起来有点自由,可能会很混乱。我喜欢将对象作为参数传递给方法的想法。这将为传入数据提供结构,但允许您根据需要包含或排除详细信息。再次感谢George。很有帮助
public function loadPage ($variable)