novadaemon / larafeat
Laravel 包,用于实现领域驱动设计模式。灵感来自 lucidarch/lucid
v1.0.1
2023-06-15 21:03 UTC
Requires
README
Larafeat 是 Lucidarch 的简化修改。它允许你在 Laravel 应用程序中构建和提供功能。
安装
您可以通过 composer 安装此包
composer require novadaemon/larafeat
此包支持 Laravel 9 和 Laravel 10。
用法
使用命令 make:feature
创建新的功能
php artisan make:feature MyAwesomeFeature
你可以写不带 "Feature" 前缀的名字,命令会将其添加到类和文件名中。
php artisan make:feature MyAwesome
上述命令在 app/Features 目录中创建了 MyAwesomeFeature 类文件。
<?php namespace App\Features; use Illuminate\Http\Request; use Novadaemon\Larafeat\Feature; class MyAwsomeFeature extends Feature { public function handle(Request $request) { $order = $request->input('order'); //... } }
此外,该命令还在 tests 目录中生成了 MyAwesomeFeatureTest 文件。
<?php namespace Tests\Feature; use Tests\TestCase; use App\Features\MyAwsomeFeature; class MyAwsomeFeatureTest extends TestCase { public function test_my_awsome_feature() { $this->markTestIncomplete(); } }
make:fature
命令接受 --pest
选项。如果此选项存在,为测试创建的文件将是一个 Pest 文件。
<?php namespace Tests\Feature; test('example', function () { $response = $this->get('/'); $response->assertStatus(200); });
用法
要开始提供服务功能,你必须从 Larafeat 控制器扩展你的控制器。
<?php namespace App\Controllers; use Novadaemon\Larafeat\Controllers\Controller; use App\Features\MyAwesomeFeature; class MyController extends Controller { public function get() { return $this->serve(MyAwesomeFeature::class); } }
你可以在 Feature 构造函数中定义类属性,然后,你可以通过 serve 方法的 arguments 参数传递它们。
<?php namespace App\Features; use Illuminate\Http\Request; use Novadaemon\Larafeat\Feature; class MyAwsomeFeature extends Feature { public function __construct(private string $name) { } public function handle(Request $request) { $name = $this->name; //... } }
<?php namespace App\Controllers; use Novadaemon\Larafeat\Controllers\Controller; use App\Features\MyAwesomeFeature; class MyController extends Controller { public function get() { return $this->serve(MyAwesomeFeature::class, ['name' => 'Jesús']); } }
在功能内部,你可以使用 run 方法调度 Laravel 作业。
<?php namespace App\Features; use App\Jobs\GreetingJob; use Illuminate\Http\Request; use Novadaemon\Larafeat\Feature; class MyAwsomeFeature extends Feature { public function __construct(private string $name) { } public function handle(Request $request) { return $this->run(new GrettingJob($this->name)); } }
贡献
贡献非常简单,并且非常受欢迎!只需发送一个 PR 或创建一个 issue!
致谢
许可
MIT 许可证 (MIT)。请参阅 许可文件 获取更多信息。