Todos los cursos con descuento por Cyber Monday 🎯

¿Cómo añado mis propias clases a un proyecto de Laravel?

Tiempo de lectura: 1.39 minutos

Póster del artículo ¿Cómo añado mis propias clases a un proyecto de Laravel?

Creando clases y carpetas dentro de app

En Laravel 5, todo el contenido de la carpeta app se carga de forma automática usando PSR-4.

Esto lo podemos ver en el archivo composer.json:

"psr-4": {
    "App\\": "app/"
}

Esto significa que podemos crear nuestras clases dentro de app, y éstas serán reconocidas inmediatamente (incluso si no se trata de un modelo, controlador, middleware, evento, etcétera).

Por ejemplo, puedo crear un archivo en la siguiente dirección:

app/Custom/MyClass.php

Sólo debo asegurarme de usar el namespace adecuado dentro de MyClass.php:

<?php namespace App\Custom;

class MyClass 
{
    /* métodos y/o atributos */
}

Y eso es todo. Ahora puedo usar esta clase desde cualquier contexto.

Por ejemplo, si lo quiero usar desde un controlador, entonces en la parte superior añadiría:

use App\Custom\MyClass;

A tener en cuenta:

  • Hay muchas formas de organizar nuestro código.
  • Distintas estructuras de carpetas que podemos seguir.
  • Y ello va a depender mucho de la magnitud del proyecto, ya que Laravel es flexible en ese sentido, y podemos organizarnos como mejor nos parezca.

Creando carpetas al mismo nivel que app

Por cierto: no estamos limitados a la carpeta app.

Es decir, podemos tener muchas carpetas aquí, en distintos niveles. Pero si de pronto nuestra aplicación crece mucho y queremos organizar todo en base a módulos (u otro enfoque), podemos crear carpetas al mismo nivel que la carpeta app.

Para ello hemos de aplicar PSR-4 a estas nuevas carpetas. Por ejemplo:

"psr-4": {
    "App\\": "app/",
    "Blog\\": "blog/",
    "Dashboard\\": "dashboard/"
}

Y así dentro de blog y dashboard podríamos tener carpetas para nuestros modelos, servicios, interfaces, etcétera.

En este último caso, será necesario ejecutar composer dump-autoload.

Ejemplo breve

  1. He creado una carpeta tawa en el directorio raíz de mi proyecto (nombre de la aplicación que estoy desarrollando, únicamente a modo de ejemplo; podría ser el nombre de un módulo).
Carpeta creada en la raíz del proyecto
  1. Agregué una carpeta Services en su interior, y a su vez un archivo CvHandler.php al interior de esta carpeta.
  2. Modifiqué el archivo composer.json:
    "psr-4": {
        "App\\": "app/",
        "Tawa\\": "tawa/"
    }
  3. Definí la clase CvHandler del siguiente modo:

    <?php namespace Tawa\Services;
    
    class CvHandler
    {
        public function sayHello()
        {
            return 'hi';
        }
    }
  4. Ejecuté composer dump-autoload.
  5. Finalmente ingresé a la consola interactiva Tinker (ejecutando php artisan tinker), para verificar que funcione la nueva clase.
Verificando el funcionamiento de la clase en Tinker

Este paso 6 demuestra que lo que hicimos es factible, y nuestras clases estarán disponibles en nuestro proyecto siempre que usemos el namespace adecuado.

# psr 4 # laravel

Logo de Programación y más

Comparte este post si te fue de ayuda 🙂.

Regístrate

Accede a todos los cursos, y resuelve todas tus dudas.

Cursos Recomendados 🚀

Imagen para el curso Aprende Laravel

Aprende Laravel

Aprende Laravel desde cero y desarrolla aplicaciones web reales, en tiempo récord, de la mano de Laravel.

Iniciar curso
Imagen para el curso Laravel Upgrade

Laravel Upgrade

Actualiza tus proyectos desde cualquier versión hasta la última versión estable de Laravel.

Iniciar curso
Imagen para el curso Laravel y Vue

Laravel y Vue

Desarrollemos un Messenger! Aprende sobre Channels, Queues, Vuex, JWT, Sesiones, BootstrapVue y mucho más.

Iniciar curso

Espera un momento ...

¿Te gustaría llevar mi curso de Laravel, gratis?

Sólo debes ingresar tus datos: