Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

198
Views
Cómo lidiar con la clase no encontrada con el compositor

Instalé Composer y Laravel e instalé algunos paquetes.
todo funciona bien, pero ahora creé mi propia clase en la carpeta services
Le di espacio de nombre de Servicios así:

Servicios de espacio de nombres;

Y el nombre de la clase es UploadToImgurService

Ejecuto el comando composer:

 composer dump-autoload

Y en mi controlador escribí:

 use Services\UploadToImgurService;

Pero me sale este error:

 Class 'Services\UploadToImgurService' not found

¿Qué hice mal? ¿Hay algo más que deba hacer con composer para cargar automáticamente la clase de servicio?

EDITAR Encontré una solución
Edité el archivo composer.json y agregué a psr-4 la línea

 "Services\\" : "app/services"

¿Pero por qué no funcionó antes? La línea :

 "App\\": "app/",

¿estaba allí, tal vez cargó la clase pero bajo el espacio de nombres de la aplicación?

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Si está utilizando un sistema de archivos que distingue entre mayúsculas y minúsculas, necesitará tener la carpeta Services con S mayúscula.

about 4 years ago · Santiago Trujillo Report

0

Tu idea es correcta, pero déjame intentar explicarte cómo funciona la carga automática del psr-4.

Puede definir espacios de nombres raíz en su archivo composer.json y asignarlo a cualquier directorio de proyecto. Dentro de los directorios definidos, sus clases deben obtener el espacio de nombres raíz. Los segmentos del espacio de nombres después de la raíz son creados por su estructura de subdirectorio y el nombre de la clase es igual al nombre del archivo (PSR-4 Autoloading ).

Por ejemplo "MyNamespace\\WithSubNamespace\\": "cool/project"

cool/project/MyClass.php -> MyNamespace\WithSubNamespace\MyClass

cool/project/SubDirectory/AnotherClass.php -> MyNamespace\WithSubNamespace\SubDirectory\AnotherClass

En Laravel, el directorio de la aplicación está asignado al espacio de nombres de la aplicación de forma predeterminada. Opcionalmente, puede cambiar el espacio de nombres raíz con el comando php artisan app:name [NewRootNamespaceName] , pero el cargador automático solo encuentra clases dentro del directorio de la aplicación. Si crea un nuevo directorio fuera de "aplicación", debe agregar el directorio a su asignación de espacio de nombres psr-4 en el archivo composer.json.

En su ejemplo, define un nuevo espacio de nombres raíz en el directorio de la aplicación existente, por lo que su problema era que el espacio de nombres raíz era desconocido y lo resolvió agregando la línea en su composer.json. Esto es posible porque psr-4 proporciona una gran flexibilidad. Pero personalmente, no recomendaría usar diferentes espacios de nombres raíz en el mismo proyecto.

Espero poder ayudar y tal vez esto también sea interesante para ti: composer.json PSR-4 .

about 4 years ago · Santiago Trujillo Report

0

tal vez olvidaste agregar esta línea de código

 require_once('vendor/autoload.php');
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!