为什么不在PHP中修改此类属性?

时间:2015-04-07 12:13:00

标签: php function oop

我有这个功能:

public userID = 1;

public function setID($id)
    {
        $this->userID = $id;

    }

它位于一个类中,因此该函数应将userID变量设置在顶部。正如您在此处所见,我创建了一个对象并使用正确的参数调用该函数:

$data = new Data();
$data->setID(($_SESSION['ID']));

会话ID确实可以使用我回显会话ID。

但是现在我有另一个函数来使用userID变量然后我得到错误:

  

未定义的变量:userID。

我使用这个变量的函数就是这个:

$ordSql = "INSERT INTO order(DATUM, KLANT_ID) VALUES($datum, $userID)";
$resultaat = mysqli_query($verbinding, $sql) or die (mysqli_error($verbinding));

这是我的setID函数下面的另一个函数。有谁知道如何解决这个问题?

5 个答案:

答案 0 :(得分:4)

您缺少public $ userId变量上的$。这个例子打印42:

<?php

class Data {
    public $userId = 1;

    public function setId($id) {
        $this->userId = $id;
    }

    public function otherFunction() {
        echo $this->userId;
    }
}

$data = new Data();
$data->setId(42);
$data->otherFunction();

答案 1 :(得分:0)

更改

 $userID; 

$this->userID;

答案 2 :(得分:0)

您必须使用$ this-&gt; userID而不是$ userID

$ordSql = "INSERT INTO order(DATUM, KLANT_ID) VALUES($datum, $this->userID )";
$resultaat = mysqli_query($verbinding, $sql) or die (mysqli_error($verbinding));

答案 3 :(得分:0)

已发布但已删除,这是解决方案:

$ordSql = "INSERT INTO order(DATUM, KLANT_ID) VALUES($datum, $this->userID)";
$resultaat = mysqli_query($verbinding, $sql) or die (mysqli_error($verbinding));

而不是:

$ordSql = "INSERT INTO order(DATUM, KLANT_ID) VALUES($datum, $userID)";
$resultaat = mysqli_query($verbinding, $sql) or die (mysqli_error($verbinding));

答案 4 :(得分:0)

如错误所示,未设置变量$usedID。设置了属性 userId

您正在尝试将类的属性用作变量,这是不可能的。 (你可能有另一个名为$ userID的变量,例如它在setter中很常见)

您应该始终使用$this->userId而不是$userID