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();?>
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP