流明定制服务商
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!"
【讨论】:
从流明切换到飞行,但将其设置为正确答案:)以上是关于流明定制服务商的主要内容,如果未能解决你的问题,请参考以下文章