当我在类的构造函数中定义它时,为什么会得到未定义变量的错误?

时间:2013-03-15 09:41:09

标签: php oop class

从以下html开始,文字字段中的数据由action_script.php提供:

<form method='post' action='action_script.php'>
        <input type='text' name='text_field' id='text_field' />
        <input type='submit' value='submit' />
</form>

action_script.php包含以下代码:

<?php
class Tester {
    private $text_field;

    public function __construct() {
        $text_field = $_POST['text_field'];
    }

    public function print_data() {
        echo $text_field; # LINE NUMBER 10
    }
}

$obj = new Tester();
$obj->print_data();

我尝试从action_script.php中的html打印发送的数据但是我收到以下警告/错误:

Notice: Undefined variable: text_field in E:\Installed_Apps\xampp\htdocs\php\action_script.php on line 10

为什么?

3 个答案:

答案 0 :(得分:5)

在课堂内,您必须使用$this->来引用您的会员属性,例如

<?php
class Tester {
    private $text_field;

    public function __construct() {
        $this->text_field = $_POST['text_field'];
    }

    public function print_data() {
        echo $this->text_field; # LINE NUMBER 10
    }
}

$obj = new Tester();
$obj->print_data();

您还应该在使用之前检查$_POST['text_field']是否已设置

答案 1 :(得分:4)

我正在使用$语句,但是仍然存在相同的问题,然后我发现所调用的变量一定不能带有$this->$text_field; 符号,如上面的某些用户所述。

例如,不能这样

$this->text_field;

这是正确的方法

max()

答案 2 :(得分:2)

应该是 -

echo $this->text_field;

在您的print_data方法中,也在您的所有其他方法中......

使用$this关键字访问成员属性和功能。