为什么从控制器调用时应用程序未定义?

Why is app undefined when called from controller?

我想知道为什么我无法从我的控制器访问 $app

我正在使用我在 app.php 中注册的服务提供商。

$app->register(\Barryvdh\DomPDF\ServiceProvider::class);

文档告诉我如下使用它(从控制器):

$pdf = $app->make('dompdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');
return $pdf->stream();

或:

$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');
return $pdf->stream();

无论哪种方式都会出现以下错误

Undefined variable: app

我怎样才能使这个工作?

在 Lumen 中,您应该使用 app() 辅助方法(参见 Lumen docs)来获取 class.

的实例

这是我使用的示例。

routes/web.php

<?php

/** @var \Laravel\Lumen\Routing\Router $router */

$router->get('/', 'ExampleController@index');

app/Http/Controllers/ExampleController.php

<?php

namespace App\Http\Controllers;

use Dompdf\Dompdf;

class ExampleController extends Controller
{
    public function index()
    {
        /** @var Dompdf $pdf */
        $pdf = app('dompdf');
        $pdf->loadHTML('<h1>Test</h1>');

        // Output whatever you like
        return $pdf->outputHtml();
    }
}