【问题标题】:Assigning Values to a Class Property in PHP在 PHP 中为类属性赋值
【发布时间】: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-&gt;_totalBalance$this是对象。
  • die() 不应该在类中使用,它违背了封装的目的。改为抛出异常。
  • 但它的期初余额为 0,对吧? private $_totalBalance = 0。我不清楚的是为什么类中有一个值(0)。
  • @user 这是实例化时设置的默认值。你可以在构造函数中做同样的事情,例如public function __construct() { $this-&gt;_totalBalance = 0; }

标签: php properties


【解决方案1】:

当您调用$a-&gt;makeDeposit() 时,makeDeposit() 内部的$this$a 相同。如果您有另一个实例 ($b = new Account;),那么调用 $b-&gt;makeDeposit() 将意味着 $this 将与 $b 相同。

【讨论】:

  • 错误,类和对象肯定不能互换。类是定义,而对象是类的实例。
  • 没错,但“对象”通常用于表示“实例”以外的其他东西,所以我认为这不是最能描述性的术语。
  • Account 肯定不是既是类又是对象。
  • 好的,我会删除那个位。我总是将类对象以外的东西称为对象,根据Wikipedia,这在面向对象编程被广泛使用之前很常见......
猜你喜欢
  • 1970-01-01
  • 2011-03-02
  • 1970-01-01
  • 2015-05-08
  • 2018-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多