我是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();
?>
为什么不工作?为什么我不能访问$ this-&gt; checkWallet()..
答案 0 :(得分:1)
ToWallet无法工作的原因是因为函数认为Add的回显是返回值。 (这显然是一个字符串,在计算中没用)。需要有一个mMoney变量的return命令。尝试在添加功能
中输入类似的内容public function Add($mMoney) {
$this->Money += $mMoney;
echo "added $mMoney to Wallet";
return $mMoney;
}
我不知道其他人是怎么发现的。
答案 1 :(得分:0)
对于将来遇到这种情况的任何人来说。这是解决方案:
首先:当你有一个Object时,不要将数据回显或打印到屏幕上,将它返回给父对象为你做这个,
第二:仔细检查所有变量是否只是函数,即$ wallet,或者是对象变量$ this-&gt; wallet,因为即使我盯着代码几个小时,我也看不出这不是相同的变量..
对于OOP来说,这是一个多么令人头疼的问题