Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Falha no Autoload

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;
    }

}
2 respostas

Ja foi verificado e os nomes dos arquivos estao corretos.

solução!

Quando eu tirei o use os warnings sumiram, acredito que seja por que quando a classe esta no mesmo diretorio nao precise do use apesar do instrutor ter utilizado na video aula, isso resolve meu problema

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software