我是Lumen和Laravel的新手,但我必须使用Lumen编写REST API.我已经设置了一个控制器,我在使用记录器时遇到了问题.我按照文档:Lumen docs
这是我的控制器app/Http/Controllers/DocumentsController.php:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Log;
class DocumentsController extends Controller
{
public function index()
{
Log::info('test');
return response()->json(['result' => 'Oh hey!']);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我运行这个我收到一个错误说:
DocumentsController.php第22行中的FatalErrorException:找不到类"Log"
所以Log外观似乎有些问题(不太确定那些在Laravel/Lumen中是如何工作的).
但是,如果我更改了Log :: info()调用,要手动将日志服务从DI容器中拉出,那么它可以正常工作:
$app = app();
$app->make('log')->info('test');
Run Code Online (Sandbox Code Playgroud)
关于为什么官方文档中描述的Facade方法不起作用的任何想法?
Rub*_*ben 11
Doh,当然在发布这个问题后5分钟我发现了.我在Application基类(vendor/laravel/lumen-framework/src/Application.php)中注意到以下别名:
public function withFacades()
{
Facade::setFacadeApplication($this);
if (! static::$aliasesRegistered) {
static::$aliasesRegistered = true;
class_alias('Illuminate\Support\Facades\Auth', 'Auth');
class_alias('Illuminate\Support\Facades\Cache', 'Cache');
class_alias('Illuminate\Support\Facades\DB', 'DB');
class_alias('Illuminate\Support\Facades\Event', 'Event');
class_alias('Illuminate\Support\Facades\Gate', 'Gate');
class_alias('Illuminate\Support\Facades\Log', 'Log');
class_alias('Illuminate\Support\Facades\Queue', 'Queue');
class_alias('Illuminate\Support\Facades\Schema', 'Schema');
class_alias('Illuminate\Support\Facades\URL', 'URL');
class_alias('Illuminate\Support\Facades\Validator', 'Validator');
}
}
Run Code Online (Sandbox Code Playgroud)
但是从未调用此方法,因为在bootstrap/app.php中,$ this-> withFacades()调用默认被注释掉.
我取消注释它现在它的工作原理.
| 归档时间: |
|
| 查看次数: |
2709 次 |
| 最近记录: |