TransWikia.com

Erro Uncaught Error: Class 'ClienteCadastro' not found Utilizando namespace

Stack Overflow em Português Asked by Matheus Massa on January 19, 2021

Estou estudando sobre namespaces, escrevi o código abaixo, porém esta retornando o seguinte erro:

string(16) “ClienteCadastro” Fatal error: Uncaught Error: Class
‘ClienteCadastro’ not found in
/var/www/html/curso_php/namespace/index.php:13 Stack trace: #0 {main}
thrown in /var/www/html/curso_php/namespace/index.php on line 13

No arquivo config.php o var_dump() deveria retornar as duas classes.

Estrutura das pastas:
|-Projeto
|-config.php
|-index.php
|–class
|—Cadastro.php
|—Cliente
|—–Cadastro.php

config.php

<?php
    spl_autoload_register(function($nameClass){

        var_dump($nameClass);

        $dirClass = "class";
        $filename = $dirClass . DIRECTORY_SEPARATOR . $nameClass . ".php";

        if (file_exists($filename) === true) {
            require_once $filename;
        }

    });?>

ClienteCadastro.php

<?php
namespace Cliente {

    class Cadastro extends Cadastro {
        public function registrarVenda() {

            echo "foi registrada uma venda para o cliente " . $this->getNome();

        }
    }
}?>

Cadastro.php

    public function getEmail():string
    {
        return $this->email;
    }


    public function getNome():string
    {
        return $this->nome;
    }


    public function getSenha():string
    {
        return $this->senha;
    }

    public function setEmail($email)
    {
        $this->email = $email;
    }

    public function setNome($nome)
    {
        $this->nome = $nome;
    }

    public function setSenha($senha)
    {
        $this->senha = $senha;
    }

    public function __toString()
    {
        return json_encode(array(
            "nome"=>$this->getNome(),
            "email"=>$this->getEmail(),
            "senha"=>$this->getSenha()
        ));
    }
}?>

index.php

<?php
require_once "config.php";

use ClienteCadastro;

$cad = new Cadastro();
$cad->setNome("Matheus");
$cad->setEmail("[email protected]");
$cad->setSenha("12345");

echo $cad;
echo "--------------<br>";

$cad->registrarVenda();?>

2 Answers

Confere sua classe Cadastro.php, o erro penso que esteja nela:

class Cadastro {
    private $nome;
    private $email;
    private $senha;

    public function getNome():string{
        return $this->nome;
    }

    public function getEmail():string{
        return $this->email;
    }

    public function getSenha():string{
        return $this->senha;
    }

    public function setNome($nome){
        $this->nome = $nome;
    }

    public function setEmail($email){
        $this->email = $email;
    }

    public function setSenha($senha){
        $this->senha = $senha;
    }

    public function __toString(){

        return json_encode(
            array(
                "nome"=>$this->getNome(),
                "email"=>$this->getEmail(),
                "senha"=>$this->getSenha()
            )

        );

    }

}

Answered by Agnaldo Junior on January 19, 2021

No arquivo de config, troca:

$filename = $dirClass . DIRECTORY_SEPARATOR . $nameClass . ".php";

para:

$filename = str_replace ("\", "/", $dirClass . DIRECTORY_SEPARATOR . $nameClass . ".php");

Answered by Heitor Ferreira on January 19, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP