我对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;
?>
我听说使用Global范围是不受欢迎的,我确信将变量作为字段放在类中是不对的,特别是考虑到file_1.php中可能存在几个不相关的变量需要在page_2.php中引用。那么我需要做什么?
由于
答案 0 :(得分:1)
将变量作为参数传递给loadPage()
:
$myClass->loadPage($variable);
并更新loadPage()
的定义以接受参数:
public function loadPage ($variable)
当您包含page_2.php时,只需将该脚本中的代码插入当前运行的脚本和范围即可。因此,page_2.php中的代码可以简单地引用$variable
而无需任何额外的工作。
请注意,此处适用的范围规则与其他地方相同,因此,如果您在page_2.php中定义类或机箱,则必须将$ variable显式传递到这些范围以访问其值。