2012-07-17 32 views
-1

我是PHP OOP的新手,但對PHP不太感興趣,想開始學習..並打了幾個磚牆,但是這一個難倒了我..但是因爲我可以「找不到任何疑問暢遊網絡世界。我無法找到答案,要麼..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()..

+0

不起作用?無法訪問?請注意解釋你的問題,不要把你的代碼放在這裏,等待它修復。 – 2012-07-17 09:58:20

+0

你會得到什麼錯誤? – Peon 2012-07-17 09:58:35

+4

嘗試在'$ this-> Wallet-> Add($ toAdd)'中寫入大寫字母「A」的函數名稱;' – khael 2012-07-17 09:59:19

回答

1

ToWallet不工作的原因是因爲函數認爲來自Add的回顯是返回值。 (這顯然是一個字符串,在計算中是無用的)。需要有一個mMoney變量的返回命令。嘗試在添加功能中輸入類似這樣的內容

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

我不知道其他人怎麼看不出來。

+0

嗯,這可能是有趣的,但我不想把錢退還給其他任何東西。 我想了解對象的性質,以及保持對象的對象.. 這裏我們有一個對象個人,通過對象電子錢包,我想要一個功能,將貨幣添加到對象電子錢包中,然後我希望能夠訪問電子錢包以查看電子錢包中有多少錢。重要的不在於這個例子,純粹是如何'看到'對象內部的信息,它本身在另一個對象內部。 – BaneStar007 2012-07-18 08:20:43

+0

Ahh,謝謝Redelman,這是回報,但不是爲了錢,而是爲了檢查..我試圖讓它屏幕,而不是其他對象 – BaneStar007 2012-07-18 09:15:49

0

的人誰在未來遇到這個..繼承人的解決方案:

首先:當你有一個對象,不打印或打印數據在屏幕上,它返回到父對象爲你做這件事,

第二:仔細檢查所有變量是否只是函數,即$錢包,或者是對象變量$ this->錢包,因爲即使我盯着代碼幾個小時,我也無法看到這是不一樣的變量..

OOP的新,一個混亂的心態