2024/04/05にマージされたArtisanコマンドのバグ修正PRが、laravel/framework (v11.3.0) に含まれてリリースされました。
![](http://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_pr_merged_04.png)
Contributorsの一覧に表示されました。
![](https://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_pr_merged_05.png)
バグ修正の内容は以前の記事に記載されています。
新規プロジェクト作成
まずは新規プロジェクトを作成します。
composer create-project laravel/laravel:^11 artisan-11.2.0
![](https://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_released_03.png)
laravel/framework (v11.3.0)がインストールされているので、一旦削除してから(v11.2.0)をインストールします。
まずはプロジェクトフォルダに入ります。
cd artisan-11.2.0
![](https://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_released_05.png)
larave/framework (11.3.0) を一旦削除します。
まっとうに「composer remove」を実行するとエラーになります。
少し邪道な方法ですが、rmコマンドで削除します。
rm -rf vendor/laravel/framework
![](https://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_released_06.png)
laravel/framework (11.2.0) をインストールします。
composer require laravel/framework:11.2.0
![](https://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_released_07.png)
Artisanコマンド作成
バグ修正が適用される前のLaravel11.2.0でバグの内容を確認してみます。
Artisanコマンドを作成します。
php artisan make:command Foo
![](https://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_released_09.png)
「app/Console/Commands/Foo.php」が作成されました。
![](https://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_released_10.png)
このファイルを編集・保存します。
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Contracts\Console\PromptsForMissingInput;
use function Laravel\Prompts\multiselect;
class Foo extends Command implements PromptsForMissingInput
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'app:foo {args*}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Execute the console command.
*/
public function handle()
{
var_dump($this->argument('args'));
}
/**
* Prompt for missing input arguments using the returned questions.
*
* @return array<string, string>
*/
protected function promptForMissingArgumentsUsing(): array
{
return [
'args' => fn () => multiselect(
label: 'ユーザーを選択してください。',
hint: '複数のユーザーを選択できます。',
options: ['foo', 'bar', 'baz'],
),
];
}
}
バグの確認(v11.2.0)
配列引数の設定をしたartisanコマンドで引数を省略実行した際、
promptsForMissingArgumentsUsing()を実装しても機能しません。
php artisan app:foo
![](https://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_released_11.png)
引数省略実行したら叱られました。
バグ修正の確認(v11.3.0)
Laravel11.3.0でバグ修正が適用されているか確認します。
先程と同様の手順でlaravel/framework (11.3.0) をインストールし直します。
まずは laravel/frameworkを削除します。
rm -rf vendor/laravel/framework
![](https://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_released_12.png)
laravel/framework (11.3.0) をインストールします。
composer require laravel/framework:11.3.0
![](https://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_released_13.png)
先程作成したArtisanコマンドを実行します。
php artisan app:foo
![](https://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_released_14.png)
multiselectのプロンプトが表示されました。
![](https://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_released_15.png)
適当に選択して確定します。
![](https://macocci7.net/blog/wp-content/uploads/2024/04/laravel11_artisan_bugfix_released_16.png)
選択した内容が配列として返されました。
バグ修正の内容がしっかり反映されていました。
以上です。
コメント