¿Te gustaría aprender a PHP desde cero?
Tenemos los cursos que necesitas.¡Haz clic aquí!


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).

  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.

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.

Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.

¿Te gustaría aprender a PHP desde cero?
Tenemos los cursos que necesitas.¡Haz clic aquí!
About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax