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

require_once não funciona

Boa noite.

Eu não consigo importar classes de directórios acima do atual.

A classe atual é a "Titular.php", que está no diretório "src/Modelo/Conta".

A classe a importar é a "Pessoa.php," que está no diretório "src/Modelo".

Tentei de duas maneiras:

//tentativa 1
require_once "../Pessoa.php";

//tentativa 2
require_once "php_alura_oop/src/Modelo/Pessoa.php";

Embora o PhpStorm acuse como funcional, ao rodar o programa recebo um FatalError

Fatal error: require_once(): Failed opening required '../Pessoa.php' (include_path='.;C:\php\pear')
3 respostas
solução!

Olá, João. Vou dar uma explicação super resumida, mas vale o estudo aprofundado sobre sistemas operacionais pra entender melhor.

Existem 2 tipos de caminhos: absolutos e relativos. Um caminho absoluto é o que parte da raiz do sistema. No Windows normalmente é o disco C (C:).

Já o relativo, como o próprio nome diz, é relativo. Pode ser relativo ao arquivo atual, relativo a onde o comando foi executado, relativo à pasta padrão de inclusão do PHP. Depende de diversos cenários.

Para evitar problemas, eu sempre uso caminhos absolutos. Para isso faço uso da constante mágica __DIR__ que me dá o caminho absoluto para o arquivo onde ela se encontra.

Sendo assim, use essa constante antes do caminho dos arquivos e tudo deve funcionar.

:-)

Fico no aguardo de uma resposta para saber se você conseguiu.

Obrigado pela rápida resposta Vinicius. Agradeço também a explicação sobre os tipos de caminhos. Eu ate já havia usado o caminho absoluto antes de postar aqui, mas não sei por que o mesmo erro continuava ocorrendo.

Funcionou dessa vez com __DIR__ Ficou assim

require_once __DIR__."\\..\\Pessoa.php";

Cheguei a usar $_SERVER antes de tu me responder e funcionou também.

$path = $_SERVER['DOCUMENT_ROOT']."/php_alura_oop/src/Modelo/";
require_once $path."padronizar.php";

Ficarei com o método DIR, ja que claramente mais curto.

Obrigado, boa tarde.

Não esquece de marcar o tópico como resolvido.

:-D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software