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

Problema para encontrar o arquivo com namespace

Eu tenho a seguinte estrutura de pasta no meu projeto:

public\classes\cadastros\agendamento\Agendamento.phppublic\classes\cadastros\financeiro\OrdemDeRecebimento.php

O arquivo de autoload.php fica em public\classes\cadastros\autoaload.php

No meu arquivo OrdemDeRecebimento.php eu criei o seguinte namespace

<?php
namespace Aplicacao\Salao\classes\cadastros\financeiro;
class OrdemDeRecebimento
{}

Para ler então o arquivo no Agendamento.php fiz da seguinte maneira

<?php
require_once "../../autoload.php";

use Aplicacao\Salao\classes\cadastros\financeiro\OrdemDeRecebimento;
$ordem = new OrdemDeRecebimento();`

Quando vou rodar o comando php Agendamento.php dentro da pasta onde se contra o arquivo, aparece o seguinte erro:

Não encontrou o arquivo: public\classes\cadastros\financeiro\OrdemDeRecebimento.php
Fatal error: Uncaught Error: Class 'Aplicacao\Salao\classes\cadastros\financeiro\OrdemDeRecebimento' not found in C:\aplicacao-salao\public\classes\cadastros\agendamento\Agendamento.php:9
Stack trace:
#0 {main}
  thrown in C:\aplicacao-salao\public\classes\cadastros\agendamento\Agendamento.php on line 9`

Alguém poderia me dizer qual seria o problema ?

4 respostas

Olá, Christian.

Essa arquitetura tem alguns problemas:

  1. public\classes\cadastros\agendamento\Agendamento.php... Esse caminho é muito grande e não traz nenhum significado. Apenas src/Modelo/Agendamento.php já seria suficiente e mais descritivo
  2. Seus namespaces não estão seguindo o padrão de começarem com letra maiúsula e serem StudlyCaps (famoso PascalCase)

Mas pra saber o que está causando o problema do autoload, preciso ver como sua função de autoload está implementada.

Esse projeto está no GitHub pra eu dar uma olhada?

Bom dia Vinicius,

Certo, irei revisar os caminhos dos arquivos.

Segue caminho do repositório https://github.com/chrisviana/teste-apliacacao

solução!

Christina. Seu arquivo autoload.php está na pasta public/classes (o que não faz muito sentido, já que não é uma classe), mas ele tenta entrar novamente na pasta public (linha 4). Por isso o erro. :-)

Certo, reorganizei meus arquivos.

Tudo certo !! Obrigado.

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