-1

私はPHPOOPに不慣れですが、PHPにはあまり慣れていないので、学び始めたいと思っていました。そして、いくつかのレンガの壁にぶつかりましたが、これは私を困惑させました。私も答えが見つかりません。

だから..コード..私がそれを理解できれば、私はそれをその核となる問題に落とし込んだ。

    <?php

class wallet {
    public $Money = 5;

    public function Add($mMoney) {
        $this->Money += $mMoney;
        echo "added $mMoney to Wallet";
        }
    public function take($mMoney) {
        $this->Money -= $nMoney;
        }
    public function check() {
        echo $this->Money;
        echo "Check?";
    } 

    public function __get($var) {
      echo "trying to get $var and Failing";

    }       

}

class person {
    public $Name;
    public $Wallet;
    public $Purse;
    public $Cash;

    public function __construct($name, $cash) {

        $this->Wallet = new wallet();
        $this->Purse = new wallet();
        $this->Name = $name;
        $this->Cash = $cash;
    }

    public function status() {
       echo "<br><table border = 1><tr><td>".$this->Name."</td><td> Wallet?</td><td> Purse </td></tr>
       <tr><td> $ ".$this->Cash."</td><td>".$this->checkWallet()."<td>22</td></tr></table>";

    }

    public function toWallet($toAdd)  {
       $this->Wallet->add($toAdd);

    }

    public function checkWallet() {
       echo $this->Wallet->check();

    }

}

$bob = new person ("Bob", 10);
$sarah = new person ("Sarah", 20);

$bob->status();
$sarah->status();

$bob->toWallet(10);

$bob->status();
$sarah->status();

?>

なぜtoWalletが機能しないのですか?$ this-> checkWallet()にアクセスできないのはなぜですか。

4

2 に答える 2

1

ToWallet が機能しない理由は、関数が Add からのエコーを戻り値と見なしているためです。(これは明らかに文字列であり、計算には役に立ちません)。mMoney 変数のリターン コマンドが必要です。Add 関数で次のように入力してみてください

public function Add($mMoney) {
        $this->Money += $mMoney;
        echo "added $mMoney to Wallet";
        return $mMoney;
        }

他の誰もそれをどのように発見したかはわかりません。

于 2012-07-17T19:29:49.847 に答える
0

将来これに出くわす人のために..解決策は次のとおりです。

最初:オブジェクトがある場合、データを画面にエコーまたは出力せず、親オブジェクトに戻してそれを行います。

2 番目: すべての変数が関数のみ、つまり $wallet であるか、オブジェクト変数 $this->wallet であることを再確認します。コードを何時間も見つめていたにもかかわらず、これが同じ変数ではないことがわかりませんでした。 .

OOPの初心者、なんて心の混乱

于 2012-07-18T14:33:43.370 に答える