【发布时间】:2011-08-15 21:56:08
【问题描述】:
我正在学习的 PHP 书中的一个示例(说明私有属性)是这样开始的:
class Account {
private $_totalBalance = 0;
public function makeDeposit($amount) {
$this->_totalBalance+= $amount;
}
public function makeWithdrawal ($amount){
if ($amount < $this->_totalBalance) {
$this->_totalBalance -= $amount;
}
else {
die("insufficient funds <br />" );
}
}
public function getTotalBalance() {
return $this->_totalBalance;
}
}
$a = new Account;
$a->makeDeposit(500);
$a->makeWithdrawal(100);
echo $a->getTotalBalance();
$a->makeWithdrawal(1000);
?>
我的问题是,为什么 $_totalBalance 属性在类而不是对象中分配了一个值?您不希望 $totalBalance 的值特定于某个对象吗?
感谢您的帮助。
【问题讨论】:
-
是什么让你认为它是在类而不是对象中分配的?在您的示例中,您只创建一个实例。
-
什么意思?!赋值给
$this->_totalBalance,$this是对象。 -
die()不应该在类中使用,它违背了封装的目的。改为抛出异常。 -
但它的期初余额为 0,对吧? private $_totalBalance = 0。我不清楚的是为什么类中有一个值(0)。
-
@user 这是实例化时设置的默认值。你可以在构造函数中做同样的事情,例如
public function __construct() { $this->_totalBalance = 0; }
标签: php properties