0
I’m trying to learn namespace
but I’m having a hard time.
Even doing exactly as it is in a video on youtube, but it doesn’t 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 >";
?>
Pessoa.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;
}
}
?>
Pessoa.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?
Is use Person Person Person Registrations;
– novic
Not found too!
– Carlos Rocha
Besides the namespace is wrong, is talking include the file!
– novic
Check it out. Besides having the namespace you still need to do the require_once ""? The namespace doesn’t do that? So the namespace is just to do duplicate work. If I still need to do the file include, then just do include. Or did I misunderstand the concept of namespace?
– Carlos Rocha
Your namespace I would do so for example in the class Person would put
namespace Projeto\Cadastros
and would useuse Projeto\Cadastros\Pessoa
and need to work with include, require or even an auto_load, have plenty of answers about it here on the site just search!– novic
http://php.net/manual/en/language.oop5.autoload.php e https://answall.com/questions/tagged/php-autoload
– novic
in other words: do 2 jobs in one: include and namespace. Unless I got it wrong! Thanks!
– Carlos Rocha