我有一个将配置设置存储到数据库中的应用程序
数据库表由两个文本列key
和value
组成。
我想在我的应用程序开头读取所有值ONCE,然后通过
将其提供给整个应用程序 MySettings::set(key, value)
和
MySettings::get(key)
我认为最好的方法是通过$app->singleton
,但由于我是Laravel的新手,我似乎无法理解如何实现这一目标:(
而cource,如果有更好的方法(没有单身),我会很高兴知道如何。
答案 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
}
}