Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Modelo de configurações globais do Laravel


Você pode criar um provedor de serviços, digamos SettingsServiceProvider , que carrega todas as configurações do banco de dados e as armazena em cache. Em seguida, em carregamentos de página subsequentes, ele pode retornar valores de configuração em cache em vez de consultar o banco de dados, com o qual você deve se preocupar com razão.

Algo tão simples como:
class SettingsServiceProvider extends ServiceProvider
{
    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton('settings', function ($app) {
            return $app['cache']->remember('site.settings', 60, function () {
                return Setting::pluck('value', 'key')->toArray();
            });
        });
    }
}

Supondo que seu modelo de configurações seja chamado de Setting conforme as convenções de nomenclatura do Laravel. Você pode então acessar as configurações assim:
<h1>{{ array_get(app('settings'), 'site.name') }}</h1>

Se você quiser uma maneira mais bonita de acessar as configurações, poderá criar uma função auxiliar:
function setting($key)
{
    return array_get(app('settings'), $key);
}

O que faria uso assim:
<h1>{{ setting('site.name') }}</h1>

Quase emulando o config() uso da função auxiliar.