变量的Php问题

时间:2011-06-01 09:16:06

标签: php class

例如我有3个文件:

首先index.php,代码如下:

<?php
  include("includes/vars.php");
  include("includes/test.class.php");

  $test = new test();
?>

然后vars.php,代码如下:

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

和上次test.class.php

 <?php
 class test 
{
  function __construct()
  {
    echo $data;
  }
}
?>

当我运行index.php时,Some Data变量的$data值未显示,如何使其工作?

4 个答案:

答案 0 :(得分:1)

Reading material.

由于范围。数据在全局范围内,类中唯一可用的是类范围内的变量和方法。

你可以做到

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

但是在类中使用全局变量是良好做法。

您可以通过构造函数将变量传递给类。

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

$test = new test("test");

答案 1 :(得分:1)

echo $data;尝试回显本地变量的数据,这显然没有设置。 您应该将$ data传递给构造函数:

    <?php
 class test 
 {
   function __construct($data)
   {
     echo $data;
   }
 }
?>

它会像这样工作:

$test = new test($data);

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

答案 2 :(得分:1)

$data不在同一范围内,这就是它不可用的原因。 如果您希望数据在类中未定义,则可以传递数据。

class Test 
{
    function __construct($data)
    {
        echo $data;
    }
}
$oTest = new Test('data');

答案 3 :(得分:0)

我可以建议你使用全局变量,但那很难看。我建议你改用常量,因为这感觉足够了

define('DATA', "Some Data");

另一种解决方案是将值注入对象

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