我试图向容器中注册一个Uuid,并且尝试了多次从路由控制器中检索它,但是uuid值不是第一次注册。
有人可以帮助我理解吗?
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
if(App::bound('conf')==NULL)
App::instance('conf', Uuid::generate()->string);
}
}
class InstanceController extends Controller
{
public function getUuid()
{
return App::make('conf');
}
}
我需要注册一个所有人都可以访问的唯一值或对象。
我也尝试输入以下代码:
config(['uuid' => Uuid::generate()->string]);
在Laravel命令句柄方法中:
class RegisteredInstances extends Command
{
public function handle()
{
config(['uuid' => Uuid::generate()->string]);
}
}
并执行它,但是当我尝试从服务中检索uuid时,响应为空。
现在我已经注册了执行此操作的laravel命令:
class RegisteredInstances extends Command
{
.
.
.
public function handle()
{
if(App::bound('conf')==NULL)
App::instance('conf', Uuid::generate()->string);
if(config('uuid2')==NULL)
config(['uuid2' => Uuid::generate()->string]);
}
}
每分钟执行一次任务,我尝试从服务控制器中检索uuid,如下所示:
class InstanceController extends Controller
{
public function getUuid()
{
return App::make('conf');
}
public function getUuid()
{
return config('uuid2');
}
}
在这种情况下,问题在于控制器返回NULL:
答案 0 :(得分:0)
您需要将laravel Configuration (accessing-configuration-values)与 AppServiceProvider
一起使用示例:
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
config([ 'theconfig.uuid' => $class_here->UUID ]);
}
}
然后使用它,致电
config('theconfig.uuid');
程序中的任何地方
答案 1 :(得分:0)
这是Laravel 4中的吗?我以前没有看过App::instance
标记,但是我在Laravel 4.2 docs for the IoC Container中找到了。
这看起来像是使用单例的情况。您可以使用它来确保conf
仅解析一次。查看4.2文档,您可以如下定义单例。
App::singleton('conf', function()
{
return Uuid::generate()->string;
});