如何从类构造函数中访问全局变量

问题描述 投票:0回答:2

例如,我有3个文件:

第一个comping以下代码:

index.php

然后使用以下代码:

<?php include("includes/vars.php"); include("includes/test.class.php"); $test = new test(); ?>

和最后一个

vars.php
当我运行index.php时,从

<?php $data = "Some Data"; ?>

变量不显示
test.class.php

值时,如何使其正常工作?
	

阅读材料

由于范围。数据在全局范围内,一类中唯一可用的是类范围内的变量和方法。 您可以做
 <?php
 class test 
{
  function __construct()
  {
    echo $data;
  }
}
?>

php class scope global-scope
2个回答
1
投票
Some Data

显然未设置的局部变量,试图回荡数据。 您应该将$数据传递给您的构造函数:

$data

它将像这样工作:
class test 
{
  function __construct()
  {
    global $data;
    echo $data;
  }
}

在实例化测试对象之前,您必须初始化全局变量$数据。

我建议您使用全球,但这很丑陋。我建议您改用常数,因为这感觉足够

class test 
{
  function __construct($data)
  {
    echo $data;
  }
}

$test = new test("test");
其他解决方案是将值注入对象

0
投票
echo $data;


    <?php
 class test 
 {
   function __construct($data)
   {
     echo $data;
   }
 }
?>
不在同一范围内,这就是为什么它不可用的原因。 如果您需要课程中未定义的可用数据,则可以通过数据传递。

$test = new test($data);

	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.