Skip to content

Instantly share code, notes, and snippets.

@lucasinaciodev
Created December 17, 2019 11:49
Show Gist options
  • Save lucasinaciodev/6147be4cbdfec75edf6f5d125713530a to your computer and use it in GitHub Desktop.
Save lucasinaciodev/6147be4cbdfec75edf6f5d125713530a to your computer and use it in GitHub Desktop.
Banco Fictício - estudando PHP - index
<?php
class ContaCorrente
{
private $titular;
public $agencia;
private $numero;
private $saldo;
public function __construct($titular, $agencia, $numero, $saldo)
{
$this->titular = $titular;
$this->agencia = $agencia;
$this->numero = $numero;
$this->saldo = $saldo;
}
public function sacar($valor)
{
Validacao::verificaNumerico($valor);
$this->saldo = $this->saldo - $valor;
return $this;
}
public function depositar($valor)
{
Validacao::verificaNumerico($valor);
$this->saldo = $this->saldo + $valor;
return $this;
}
// public function getTitular()
// {
// return $this->titular;
// }
// public function getSaldo()
// {
// return $this->saldo;
// }
// public function setNumero($numero)
// {
// $this->numero = $numero;
// }
// public function setAgencia($numAgencia)
// {
// $this->agencia = $numAgencia;
// }
public function __get($atributo)
{
Validacao::protegeAtributo($atributo);
return $this->$atributo;
}
public function __set($atributo, $valor)
{
Validacao::protegeAtributo($atributo);
$this->$atributo = $valor;
}
private function formataSaldo()
{
return "R$ " . number_format($this->saldo, 2, ",", ".");
}
public function getSaldo()
{
return $this->formataSaldo();
}
public function transferir(float $valor, ContaCorrente $conta)
{
Validacao::verificaNumerico($valor);
$this->sacar($valor);
$conta->depositar($valor);
return $this;
}
}
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
header('Content-Type: text/html; charset=utf-8');
require_once 'Validacao.php';
require_once 'ContaCorrente.php';
$guilherme = new ContaCorrente("Guilherme Porto", "4873", "51404-8", 6000.00);
$ricardo = new ContaCorrente("Ricardo Pereira", "5708", "29040-7", 3500.00);
?>
<head>
<style>
.container {
margin: 0 auto;
width: 40%;
border: 3px solid #ccc;
background: #111;
border-radius: 5px;
box-sizing: border-box;
padding: 10px;
color: #f2f2f2;
font-size: 1.3em;
}
</style>
</head>
<body style="background-color: #333">
<div class="container">
<pre>
<?php var_dump($ricardo);
// $novaConta->sacar(400.5)->depositar(650.00);
// var_dump($ricardo);
// echo $novaConta->titular . PHP_EOL;
// $novaConta->agencia = "0162";
// var_dump($novaConta);
// echo $novaConta->getSaldo();
// $guilherme->transferir(500.00, $ricardo);
// var_dump($guilherme);
// var_dump($ricardo);
$ricardo->sacar(50.00);
var_dump($ricardo);
echo $ricardo->agencia;
?>
</pre>
</div>
</body>
<?php
class Validacao {
public static function protegeAtributo($atributo)
{
if ($atributo == "titular" || $atributo == "saldo") {
throw new Exception("O atributo $atributo contina privado!");
}
}
public static function verificaNumerico($valor)
{
if (!is_numeric($valor)) {
echo "valor passado como parâmetro não é um número!";
exit;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment