namespace php7 do not find url? [duplicate]

0

I'm trying to learn namespace but I'm having difficulty.

Even doing exactly as it is in a video on youtube, but it does not work.

I have the project folder

Projeto
Projeto\Cadastros
Projeto\Cadastros\Index.php
Projeto\Cadastros\Pessoa
Projeto\Cadastros\Pessoa\Pessoa.php
Projeto\Cadastros\Teste
Projeto\Cadastros\Teste\Pessoa.php

Index.php

<?php

 ini_set("display_errors",true);
 ini_set("display_startup_erros",1);
 error_reporting(E_ALL && E_NOTICE);
 error_reporting( E_ALL | E_STRICT ); // PHP 5.3
 error_reporting( E_ALL ); // Todas as outras versões 

 $pessoa = new Pessoa(1, 40, "Carlos");

 $pessoa2 = new Pessoa2();
 $pessoa2->setIdPessoa(1);
 $pessoa2->setIdadePessoa(43);
 $pessoa2->setNomePessoa("Cleonice");


 echo $pessoa->getIdPessoa()."<br >";
 echo $pessoa->getNome()."<br >";
 echo $pessoa->getIdadePessoa()."<br >";

 echo "<br />";

 echo $pessoa2->getIdPessoa()."<br >";
 echo $pessoa2->getNomePessoa()."<br >";
 echo $pessoa2->getIdadePessoa()."<br >"; 


?>

Person.php

<?php

namespace Cadastros\Pessoa\Pessoa;

Class Pessoa {

    private $idPessoa;
    private $idadePessoa;
    private $nome;

    public function __construct ($_idPessoa, $_idadePessoa, $_nome) {
        $this->idPessoa = $_idPessoa;
        $this->idadePessoa = $_idadePessoa;
        $this->nome = $_nome;
    }

    public function getIdPessoa () {
        return $this->idPessoa;
    }

    public function getIdadePessoa () {
        return $this->idadePessoa;
    }

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


?>

Person.php

<?php

namespace Cadastros\Teste\Pessoa;

Class Pessoa {

    private $idPessoa;
    private $idadePessoa;
    private $nomePessoa;

    public function __construct () {}


    public function setIdPessoa ($_idPessoa) {
        $this->idPessoa = $_idPessoa;
    }   

    public function setIdadePessoa ($_idadePessoa) {
        $this->idadePessoa = $_idadePessoa;
    }   

    public function setNomePessoa ($_nomePessoa) {
        $this->nomePessoa = $_nomePessoa;
    }

    public function getIdPessoa () {
        return $this->idPessoa;
    }

    public function getIdadePessoa () {
        return $this->idadePessoa;
    }

    public function getNomePessoa () {
        return $this->nomePessoa;
    }
}


?>

Error

Fatal error: Uncaught Error: Class 'Pessoa' not found in C:\Program Files\Apache24\Apache24\htdocs\funerariasaopedro.net.br\Cadastros\index.php:19 Stack trace: #0 {main} thrown in C:\Program Files\Apache24\Apache24\htdocs\funerariasaopedro.net.br\Cadastros\index.php on line 19

What's wrong?

    
asked by anonymous 09.06.2018 / 15:18

1 answer

0

Your PHP simply does nothing, use is not like import of Java or using of C #, it is not include , it is just a part of the language to reference a namespace with a nickname.

As I explained in:

The correct one would be to use spl_autoload_register (or other SPL functions for this purpose), as I already answered in

Now if you are using composer (I said "if it is"), then you must include the composer-autoload in your index.php , because only then will it be able to identify classes by namespaces and solve them, of course that it is necessary to set composer.json also, as I already answered in:

If you want to use composer, then read more about it at:

[Extra] about PHP errors

This part here is probably wrong:

 ini_set("display_errors",true);
 ini_set("display_startup_erros",1);
 error_reporting(E_ALL && E_NOTICE);
 error_reporting( E_ALL | E_STRICT ); // PHP 5.3
 error_reporting( E_ALL ); // Todas as outras versões 

Simply setting up in php.ini would already solve, if it is production then do not even use it, just for development, other than display_startup_erros actually has a different intent than you are probably imagining and applying error_reporting will have no effect, since the intent of error_reporting is much more than displaying errors, read this:

09.06.2018 / 22:41