2017-05-02 15 views
1

このスクリプトは常に0を返します。私がgetSKU()をエコーするように変更した場合、動作しますが、数量、価格または名前は決して動作しません。もし誰かが何かアイデアを持っていたら、私の人生を刺激する助けてください!PHPクラスのgetメソッドは常に0を返します

<?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; 
    } 

} 
+0

「var」は必要ありません。 '$ sku = 0;'のようなクラス内の変数の値を設定する必要があります – Martin

+0

@Martin '$ _SESSION'でコードを実行しましたが、うまく動作します。 –

+1

コードは正常に動作します。 [参照してください](http://sandbox.onlinephpfunctions.com/code/185b06b544a174f3fb9e93c1853b86ff6252119e) – Martin

答えて

1

あなたがGET methodesであなたの属性をエコーべきではないセッション内で貴社の製品を格納するための他のソリューションを考える必要があります。

return $this->Variable; 

リターンは呼ぶモジュールにプログラム制御を返します。他の回答で育っ問題は間違いなく私は信じているあなたの質問に答えるために、対処されるべきであると呼ばれるモジュールの呼び出しの戻りについての詳細は

次の式で再開 実行は、ドキュメントにhere

3

echoの代わりにreturnを使用してください。 get... -methodsは現在何かを返していません(暗黙的にnull)。返す値はechoです。

は、ちょうどすべての get... -method echo returnとに置き換え、これを修正するには - 、それに加えて、すなわち

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

、あなたが知っておくべきこと$_SESSIONであなたカントストアオブジェクト(実際にはできるが、その後、あなたは魔法を実装する必要があります__sleep__wakeup - 方法。)。 あなたは

echo $this->Variable; 

あなたは常にそれらを返す必要があります(すなわち、それらをシリアライズ)

+1

コードを改善しても問題は解決しません。 – Martin

0

をチェック数量はおそらく設定されていません。この行を追加できますか?

$_SESSION[$sku]->setQuantity(5); 
$_SESSION[$sku]->getQuantity(); 
関連する問題