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

Erro no autoload

ao tentar construir o autoload é apresentado esse erro:

string(55) "C:\xampp\htdocs\curso php\strings/src/Alura\Usuario.php"

Fatal error: Uncaught Error: Class 'App\Alura\Usuario' not found in C:\xampp\htdocs\curso php\strings\cadastro.php:5 Stack trace: #0 {main} thrown in C:\xampp\htdocs\curso php\strings\cadastro.php on line 5

o meu autoload.php está assim:

<?php

spl_autoload_register(function ($classe) {
    $prefixo = "App\\";

    $diretorio = __DIR__ . '/src/';

if(strncmp($prefixo, $classe, strlen($prefixo)) !== 0) {
    return;
}


    $namespace = substr($classe, strlen($prefixo));
    $namespace_arquivo = str_replace('\\', DIRECTORY_SEPARATOR, $namespace);

    $arquivo = $diretorio . $namespace_arquivo . '.php';

    echo "<p><pre>";
    var_dump($arquivo);
    echo "</p></pre>";
});

o meu cadastro.php

<?php

require 'autoload.php';

$usuario = new App\Alura\Usuario($_POST['nome']);
$nome = $usuario->getNome();
$sobrenome = $usuario->getSobrenome();


$contato = new  App\Alura\Contato($_POST['email']);
$usuario = $contato->getUsuario();




?>

o meu Usuario.php

<?php

namespace App\Alura;

class Usuario {

    Private $nome;
    private $sobrenome;

    public function __construct(string $nome)
    {

        $nomeSobrenome = explode(" ", $nome, 2);

        if ($nomeSobrenome[0] === "") {
            $this->nome = "Nome Inválido";

        } else {

            $this->nome = $nomeSobrenome [0];
        }
        if ($nomeSobrenome[1] === null) {

            $this->sobrenome = "Sobrenome Inválido";
        } else{
            $this->sobrenome = $nomeSobrenome[1];
    }
    }

    public function getNome(): string {

        return $this->nome;
    }

    public function getSobrenome(): string {

        return $this->sobrenome;
    }
}

e o meu Contato.php

<?php


namespace App\Alura;

class Contato {

    private $email;

    public function __construct(string $email){

        $this->email = $email;

    }

    public function getUsuario(): string{
        $posicaoArroba = strpos($this->email, "@");
        if ($posicaoArroba === false){
            return "email inválido.";
        }else {
        return substr($this->email, 0 , $posicaoArroba);
        }



    }

}

imagino que pode ser erro de digitação mas já cansei de procurar e não obtive exito.

2 respostas
solução!

aparentemente só faltava o trecho:

    if (file_exists($arquivo)) {
        require $arquivo;
    }

no autoload.php

só percebi isso baixando o modelo usado na aula mas não vi na video aula isso

Tudo certo então Marcos?

Obrigado por compartilhar a solução, vou marcar a sua resposta como solução.

Vou conferir na aula, e adicionar isso no texto caso necessário.