在执行这个构造方法的时候,Laravel 的服务容器会自动注入UserRepository
的实例。
@JellyBool 额,不好意思。忘了说我用的是Lumen,Lumen的这个是在根目录里面的。
@JellyBool 我把根目录下的composer.json
里面的"vlucas/phpdotenv": "~1.0"
改成了"vlucas/phpdotenv": "~2.0"
,然后再根目录执行composer update
。
@JellyBool 我是在项目的根目录下的update。更新后/vendor/vlucas/phpdotenv/src
下的类从一个Dotenv.php
变成了三个类,是这个原因导致不能自动加载的吗?
我在.env
文件里面设置了一个值为0的变量,可是用env()
取出来的时候它的值为空字符串""
。调试发现是phpdotenv
的问题。在vendor/vlucas/phpdotenv/Dotenv.php
中有如下代码:
......
protected static function sanitiseVariableValue($value)
{
$value = trim($value);
if (!$value) {
return '';
}
......
}
......
可以看出来,当$value
为0是就返回空字符串
所以我就想更新一下phpdotenv
的版本看看能不能解决这个问题。
可是我用Composer
更新之后,访问页面出现了
Fatal error: Class 'Dotenv' not found in bootstrap\app.php on line 5
的错误提示。
请问这个问题要怎么解决?
我在Provider中用singleton()
注册了一个实例,为什么不是单例的?每次注入的时候都会调用构造函数。
ExampleProvider.php
class ExampleProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton('App\Example', function () {
return new Example();
});
}
}
routes.php
Route::get('test', function (Example $example) {
return '';
});