【发布时间】:2021-05-17 19:03:39
【问题描述】:
AppServiceProvider.php:
public function register()
{
$this->app->singleton('FacebookConversionConfigService', function($app)
{
return new FacebookConversionConfigService();
});
}
FacebookConversionConfigService.php:
class FacebookConversionConfigService {
public function __construct() {
\Log::debug(rand(0, 999999));
\Log::debug(spl_object_id($this));
}
}
控制器:
(resolve(FacebookConversionConfigService::class));
(resolve(FacebookConversionConfigService::class));
在日志中我得到不同的数据:
[2021-05-17 14:56:56] local.DEBUG: 516
[2021-05-17 14:56:56] local.DEBUG: 431890
[2021-05-17 14:56:56] local.DEBUG: 564
[2021-05-17 14:56:56] local.DEBUG: 132296
[2021-05-17 14:56:56] local.DEBUG: 519
[2021-05-17 14:56:56] local.DEBUG: 469242
[2021-05-17 14:56:56] local.DEBUG: 589
[2021-05-17 14:56:56] local.DEBUG: 543196
[2021-05-17 14:56:56] local.DEBUG: 601
但应该是一样的。为什么每次调用构造函数?在单例中,它应该只被调用一次。我试过resolve()、app(),但都是一样的。
【问题讨论】: