PHP类get方法总是返回0

时间:2017-05-02 21:30:58

标签: php

我无法解释为什么这个脚本总是返回0.如果我将它更改为echo getSKU()它可以工作,但数量,价格或名称似乎永远不会起作用。如果有人有任何想法,请帮助这对我的生活感到恼火!

<?php

session_start();

$sku = "0001";
if (!isset($_SESSION[$sku])) {
    $_SESSION[$sku] = new product($sku, 5);
} else {

}

echo $_SESSION[$sku]->getQuantity();

class product {

    var $sku;
    var $name;
    var $price;
    var $quantity;

    function __construct($par1, $par2) {
        $this->sku = $par1;
        $this->quantity = $par2;
    }

    function setSKU($x) {
        $this->sku = $x;
    }

    function getSKU() {
        echo $this->sku;
    }

    function setName($x) {
        $this->name = $x;
    }

    function getName() {
        echo $this->name;
    }

    function setPrice($x) {
        $this->price = $x;
    }

    function getPrice() {
        echo $this->price;
    }

    function setQuantity($x) {
        $this->quantity = $x;
    }

    function incrementQuantity() {
        $this->quantity++;
    }

    function getQuantity() {
        echo $this->quantity;
    }

}

3 个答案:

答案 0 :(得分:3)

您应该使用return代替echo。您的get... - 方法目前不返回任何内容(只是隐式null),它们只是echo您想要返回的值。

要解决此问题,只需将每个get... - 方法echo替换为return - 即

function getQuantity() {
    return $this->quantity;
}

除此之外,你应该知道,你不能在$_SESSION中存储对象(实际上你可以,但是你必须实现神奇的__sleep__wakeup - 方法。 )。 您应该考虑将其产品存储在会话中的其他解决方案(即序列化它们)

答案 1 :(得分:1)

你不应该在get methodes中回显你的属性

 echo $this->Variable;

你应该总是归还他们。

return $this->Variable;
  

return将程序控制返回给调用模块。执行   在被调用模块的调用

之后的表达式中继续

有关返回的更多信息,请查看文档here

答案 2 :(得分:0)

虽然其他答案中提出的问题一定要解决,但是为了回答你的问题我相信数量可能没有确定。你可以尝试添加这一行吗?

 $_SESSION[$sku]->setQuantity(5);
 $_SESSION[$sku]->getQuantity();