例如我有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
值未显示,如何使其工作?
答案 0 :(得分:1)
由于范围。数据在全局范围内,类中唯一可用的是类范围内的变量和方法。
你可以做到
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);