Boa noite Senhores
Não consegui entender o por que do erro de Fatal error: Fatal error: Call to a member function deposita() on null in C:\wamp64\www\dp1\Conta.php on line 11 . Abaixo minhas classes: Classe conta:
<?php
class Conta {
protected $saldo;
protected $estado;
public function saca($valor) {
$this->estado->saca($this, $valor);
}
public function deposita($valor) {
$this->estado->deposita($this, $valor);
}
public function getSaldo() {
return $this->saldo;
}
}
?>
Estado da Conta, Positivo e Negativo :
<?php
interface EstadoDaConta {
public function saca(Conta $conta, $valor);
public function deposita(Conta $conta, $valor);
}
?>
<?php
class Positivo implements EstadoDaConta {
public function saca(Conta $conta, $valor) {
$conta->saldo -= $valor;
if($conta->saldo < 0) $conta->estado = new Negativo();
}
public function deposita(Conta $conta, $valor) {
$conta->saldo += $valor * 0.98;
}
?>
<?php
class Negativo implements EstadoDaConta {
public function saca(Conta $conta, $valor) {
throw new Exception("Sua conta está no vermelho. Não é possível sacar!");
}
public function deposita(Conta $conta, $valor) {
$conta->saldo += $valor * 0.95;
if($conta->saldo > 0) $conta->estado = new Positivo();
}
}
?>
Para mostrar fiz assim no index
<?php
require "Conta.php";
require "EstadoDaConta.php";
require "Positivo.php";
require "Negativo.php";
require "RealizadorDeInvestimentos.php";
require "EstadoDeUmOrcamento.php";
require "Aprovado.php";
require "EmAprovacao.php";
require "Reprovado.php";
require "Finalizado.php";
$conta = new Conta(500);
echo $conta->getSaldo(), '<br />';
$conta->deposita(10);
echo $conta->getSaldo(), '<br />';
$conta->saca(100);
Fiz como no exemplo postado. Agradeço as dicas.