Laravel: ¿Dónde almacenar datos y constantes de matrices globales?

Acabo de empezar a trabajar con Laravel. Necesito reescribir un sistema completo que hice hace algunos años, usando Laravel 4 como marco base. En mi sistema anterior, solía tener un archivo constant.php con algunas constantes declaradas y un archivo globals.php que contenía muchos conjuntos de matrices (por ejemplo, estados de categorías, tipo de eventos, langs, etc.). Al hacerlo, podría usar algo como

foreach ( $langs as $code => $domain ) {
    // Some stuff
}

en cualquier parte de mi aplicación.

Mi pregunta es, ¿cómo puedo almacenar esa información en la llamada "forma laravel". Intenté usar algún tipo de objeto para almacenar esta información, configurándola como un servicio y creando una fachada:

aplicación / bibliotecas / Proyecto / Constantes.php

namespace PJ;

class Constants {

    public static $langs = [
            'es' => 'www.domain.es',
            'en' => 'www.domain.us',
            'uk' => 'www.domain.uk',
            'br' => 'www.domain.br',
            'it' => 'www.domain.it',
            'de' => 'www.domain.de',
            'fr' => 'www.domain.fr'
        ];

}

aplicación / bibliotecas / Proyecto / ConstantsServiceProvider.php

namespace PJ;

use Illuminate\Support\ServiceProvider;

class ConstantsServiceProvider extends ServiceProvider {
    public function register() {
        $this->app->singleton('PJConstants', function() {
            return new Constants;
        });
    }
}

aplicación / bibliotecas / Proyecto / ConstantsFacade.php

namespace PJ;

use Illuminate\Support\Facades\Facade;

class ConstantsFacade extends Facade {
    protected static function getFacadeAccessor() { 
        return 'PJConstants';
    }
}

composer.json

"psr-4": {
     "PJ\\": "app/libraries/Project"
},

y así accedo a esa propiedad comoPJ \ Constantes :: $ langs.

Esto funciona, pero dudo que sea la forma más eficiente / correcta de hacerlo. Quiero decir, ¿es la forma correcta de "propagar" una variable creando un proveedor de servicios y fachadas y todo eso? ¿O dónde debo poner estos datos?

Gracias por cualquier consejo

EDITAR # 01

Los datos que quiero pasar a todos los controladores y vistas se pueden configurar directamente en el script, como en el ejemplo al comienzo de mi publicación,pero También se puede generar dinámicamente, desde una base de datos, por ejemplo. Estos datos podrían ser una lista de categorías. Los necesito en todas las vistas para generar una barra de navegación, pero también los necesito para definir algunos patrones de enrutamiento (como / categoría / subcategoría / producto), y también para analizar cierta información en varios controladores (como obtener información de la categoría que contiene X producto).

Mi matriz es algo así como:

$categories = [
    1 => ['name' => 'General', 'parent' => 0, 'description' => 'Lorem ipsum...'],
    2 => ['name' => 'Nature', 'parent' => 0, 'description' => 'Lorem ipsum...'],
    3 => ['name' => 'World', 'parent' => 0, 'description' => ',Lorem ipsum...'],
    4 => ['name' => 'Animals', 'parent' => 2, 'description' => 'Lorem ipsum...']
]

Solo como un ejemplo. El índice es la identificación de la categoría, y el valor es información asociada con la categoría.

Necesito esta matriz, también, disponible en todos los Controladores y Vistas.

Entonces, si lo guardo como una variable de configuración, ¿está bien? ¿O de qué otra forma podría almacenar estos datos? ¿Cuál sería la mejor forma semánticamente correcta?

Gracias

Respuestas a la pregunta(7)

Su respuesta a la pregunta