Laravel 5项目初始设置最佳实践

时间:2015-07-15 02:03:26

标签: php laravel singleton laravel-5

我有一个将配置设置存储到数据库中的应用程序

数据库表由两个文本列keyvalue组成。

我想在我的应用程序开头读取所有值ONCE,然后通过

将其提供给整个应用程序

MySettings::set(key, value)MySettings::get(key)

我认为最好的方法是通过$app->singleton,但由于我是Laravel的新手,我似乎无法理解如何实现这一目标:(

而cource,如果有更好的方法(没有单身),我会很高兴知道如何。

1 个答案:

答案 0 :(得分:0)

你也可以实现自己的Singleton,它可以让你更容易理解实际发生的事情:

<?php
namespace App\Helpers;

class Settings
{
    private static $instance;

    private static $settings = [];

    private function __construct(){}

    public static function getInstance(){
        if(is_null(static::$instance)) 
            static::$instance= new Settings;

        return static::$settings;
    }

    public static function getKey($key)
    {
        if(array_key_exists($key , static::$settings))
            return static::$settings[$key];
        return null;
    }

    public static function setKey($key , $value)
    {
        static::$settings[$key] = $value;
    }

}

<?php

namespace App\Http\Controllers;
//...

class HelloController extends Controller
{

    public function index()
    {
        Settings::getInstance();
        Settings::setKey("foo", "bar");
        Settings::getKey("foo"); // returns bar
        // as long as you don't change "foo" again, it will always be "bar" anywhere in your app
    }
}
  1. 在app文件夹中创建一个文件夹,并将其命名为Helpers
  2. 在Helpers文件夹中创建Settings.php
  3. run&#34; Composer dump-autoload&#34;在laravel目录(不是app目录)