PHP:调用函数的对象中的对象
我是PHP OOP新手,但对PHP不太熟悉,我想开始学习。。撞到了几堵砖墙,但这一堵难住了我。。但是因为我在网上找不到任何问题。。我也找不到答案 所以。。代码。。如果我能理解的话,我把它简化为它的核心问题PHP:调用函数的对象中的对象,php,oop,Php,Oop,我是PHP OOP新手,但对PHP不太熟悉,我想开始学习。。撞到了几堵砖墙,但这一堵难住了我。。但是因为我在网上找不到任何问题。。我也找不到答案 所以。。代码。。如果我能理解的话,我把它简化为它的核心问题 <?php class wallet { public $Money = 5; public function Add($mMoney) { $this->Money += $mMoney; echo "added $mM
<?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() ToWallet不起作用的原因是函数认为Add的echo是返回值。(这显然是一个字符串,在计算中是无用的)。ammoney变量需要有一个return命令。尝试在Add函数中键入类似的内容
public function Add($mMoney) {
$this->Money += $mMoney;
echo "added $mMoney to Wallet";
return $mMoney;
}
我不知道其他人是怎么发现的。对于将来遇到这种情况的人来说。。解决方案如下: 第一:当你有一个对象时,不要将数据回显或打印到屏幕上,而是将其返回给父对象来为你做这件事 第二:再次检查所有变量是否仅为函数,即$wallet,或者是对象变量$this->wallet,因为即使我盯着代码看了几个小时,我也看不出这不是同一个变量
对于OOP来说是个新手,多么混乱的思想是行不通的?无法访问?请注意解释您的问题,不要只是将代码放在这里等待修复。请尝试在
$this->Wallet->Add($toAdd)中用大写字母“a”写入函数名代码>它在Windows机器上,不在乎大写与否,重点似乎是函数的范围比普通的全局变量或函数变量更难理解。。我通过在类中声明变量来理解,它可以用$this引用。。但是在这种情况下。。它没有看到它,或者返回,没有变量,我剪切粘贴了它,这样它就可以完整地运行,只需将它的全部复制粘贴到一个空白的php中并运行它。。对不起阿尔瓦罗,我觉得这是目前这样一个网站的规范。。剪切粘贴问题,这样任何人都可以将其剪切粘贴到一个空白的php文件中,并从自己的PC上运行,查看问题是否有效。。如果您这样做,您将看到“向钱包中添加钱”不起作用。。在一个无法运行第二类函数的类中创建一个范围内类的想法。。很抱歉,它本身不是那么明显,我认为它是一个新手MSTACK,任何人都会发现它的。嗯,这可能很有趣,但我不想把钱退还给其他任何东西。。我试图理解物体的本质,以及容纳物体的物体。。这里我们有一个对象人,有一个对象钱包,我想要一个功能,从对象人那里向对象钱包中添加钱,然后我想要能够访问钱包,查看钱包中有多少钱。。这与示例无关,仅仅是如何“看到”对象内部的信息,而对象本身就是另一个对象的内部..啊,谢谢Redelman,这是回报,但不是为了钱,而是为了检查。。我试图把它放在屏幕上,而不是放在另一个物体上