-1

我是 PHP OOP 的新手,但对 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 的 echo 是返回值。(这显然是一个字符串,在计算中没有用处)。mMoney 变量需要有一个返回命令。尝试在 Add 函数中输入类似这样的内容

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

我不知道其他人是怎么发现的。

于 2012-07-17T19:29:49.847 回答
0

对于将来遇到此问题的任何人..解决方案如下:

第一:当您有一个对象时,不要将数据回显或打印到屏幕上,将其返回给父对象为您执行此操作,

第二:仔细检查所有变量要么只是函数,即$wallet,要么是对象变量$this->wallet,因为即使我盯着代码看了好几个小时,我也看不出这不是同一个变量。 .

OOP 的新手,真是一团糟

于 2012-07-18T14:33:43.370 回答