Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

200
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

0

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

 require_once('vendor/autoload.php');
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda