* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class BankAccountException extends RuntimeException { } /** * A bank account. * */ class BankAccount { /** * The bank account's balance. * * @var float */ protected $balance = 0; /** * Returns the bank account's balance. * * @return float */ public function getBalance() { return $this->balance; } /** * Sets the bank account's balance. * * @param float $balance * * @throws BankAccountException */ protected function setBalance($balance) { if ($balance >= 0) { $this->balance = $balance; } else { throw new BankAccountException; } } /** * Deposits an amount of money to the bank account. * * @param float $balance * * @throws BankAccountException */ public function depositMoney($balance) { $this->setBalance($this->getBalance() + $balance); return $this->getBalance(); } /** * Withdraws an amount of money from the bank account. * * @param float $balance * * @throws BankAccountException */ public function withdrawMoney($balance) { $this->setBalance($this->getBalance() - $balance); return $this->getBalance(); } }