Ao tentar incluir o AutoLoad eu recebo o seguinte erro:
"Warning: The use statement with non-compound name 'validacao' has no effect in index.php on line 6.
Warning: The use statement with non-compound name 'ContaCorrente' has no effect in index.php on line 7.
Codigo do index:
<?php
header('Content-Type: text/html; charset=utf-8');
require_once "autoload.php";
use validacao;
use ContaCorrente;
Codigo do autoload:
<?php
function load($namespace){
$namespace = str_replace("\\", "/", $namespace);
$caminhoAbsoluto = __DIR__."/".$namespace.".php";
include_once $caminhoAbsoluto;
}
spl_autoload_register(__NAMESPACE__."\load");
?>
Codigo das classes se precisar:
<?php
class Validacao{
public static function protegeAtributo($atributo){
if($atributo == "titular" || $atributo == "saldo")
{
return false;
}
}
public static function verificaNumerico($valor){
if(!is_numeric($valor))
{
throw new InvalidArgumentException("O tipo passado nao e um numero");
}
}
}
<?php
use exception\saldoInsuficienteException;
class ContaCorrente{
private $titular;
private $agencia;
private $numero;
private $saldo;
public static $totalDeContas;
public static $taxaOperacao;
public function __construct($titular, $agencia, $numero, $saldo){
$this->titular = $titular;
$this->agencia = $agencia;
$this->numero = $numero;
$this->saldo = $saldo;
self::$totalDeContas++;
try{
if(self::$totalDeContas < 1){
throw new Exception("Valor inferior a zero!");
}
else{
self::$taxaOperacao = 30 / self::$totalDeContas;
}
}catch(Exception $erro){
echo $erro->getMessage();
exit;
}
}
public function sacar($valor){
validacao::verificaNumerico($valor);
if($valor > $this->saldo){
throw new saldoInsuficienteException("Saldo insuficiente");
}
$this->saldo = $this->saldo - $valor;
return $this;
}
public function depositar($valor){
validacao::verificaNumerico($valor);
$this->saldo = $this->saldo + $valor;
return $this;
}
public function __get($atributo){
Validacao::protegeAtributo($atributo);
return $this->$atributo;
}
public function transferir($valor, ContaCorrente $conta){
validacao::verificaNumerico($valor);
if($valor <0)
{
throw new Exception("O valor nao e permitido");
}
$this->sacar($valor);
$conta->depositar($valor);
return $this;
}
public function __set($atributo,$valor){
Validacao::protegeAtributo($atributo);
$this->$atributo = $valor;
}
private function formataSaldo(){
return "R$ ".number_format($this->saldo,2,",",".");
}
public function __toString(){
return $this->saldo;
}
}