流明定制服务商

Posted

技术标签:

【中文标题】流明定制服务商【英文标题】:Custom service provider for Lumen 【发布时间】:2021-09-14 07:57:17 【问题描述】:

我是 Lumen 新手,全新安装 (v8.2.4) 并遵循文档,尝试编写自己的服务,但我不断收到错误

 "Target class [App\Prodivers\BatmanServiceProvider] does not exist."

就像我说的,根据 Lumen 文档,它是全新安装的。

在 /bootstrap/app.php

$app->register(App\Providers\BatmanServiceProvider::class);

在 /app/Providers/BatmanServiceProvider.php 中

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class BatmanServiceProvider extends ServiceProvider


    public function register()
    
        return "batman!";
    

我的控制器:app/Http/Controllers/MainController.php

<?php

namespace App\Http\Controllers;

use App\Prodivers\BatmanServiceProvider;

class MainController extends Controller


    public function __construct(BatmanServiceProvider $BatmanServiceProvider)

    

    public function main()
        print "hello space!";
    



我错过了什么/做错了什么?

【问题讨论】:

...Prodivers ?您的控制器有什么原因依赖于服务提供者的实例? 我只是想用一些我可以在多个控制器中重用的功能来制作一个服务/实用程序/帮助程序。怎么做?上面的代码是文档和一堆谷歌搜索给我的。 如果你使用完整的 laravel,你可能会少一些麻烦。将简化您的生活和代码。 【参考方案1】:
    在 /bootstrap/app.php 中
    $app->register(App\Providers\BatmanServiceProvider::class);
    在 /app/Providers/BatmanServiceProvider.php 中
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\Services\BatmanService;

class BatmanServiceProvider extends ServiceProvider

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    
        $this->app->bind(BatmanService::class, function()
            return new BatmanService;
        );
    

    在your_lumen_project/app中创建Services文件夹,并创建php文件BatmanService.php

在 /app/Services/BatmanService.php 中

<?php

namespace App\Services;

class BatmanService

    public function sayHello()
        return 'hi, space!';
    

    现在,您可以在任何地方使用!
<?php

namespace App\Http\Controllers;

use App\Services\BatmanService;

class MainController extends Controller

    protected $batmanService;
    public function __construct(BatmanService $batmanService)
        $this->batmanService = $batmanService;
    

    public function main()
        return $this->batmanService->sayHello(); // "hi, space!"
    



【讨论】:

从流明切换到飞行,但将其设置为正确答案:)

以上是关于流明定制服务商的主要内容,如果未能解决你的问题,请参考以下文章

在没有数据库队列驱动程序的情况下完成流明作业调度

软删除是不是适用于流明框架?流明的限制?

在 docker 中构建流明

从流明发送电子邮件

重定向到预期的 URL 流明

如何在流明 5.2 中设置时区?