【Laravel Prompts】使い方(textプロンプト)

Laravel

Laravel11の公式パッケージ Promps の使い方の記録と解説の第1回です。

Laravel - The PHP Framework For Web Artisans
Laravel is a PHP web application framework with expressive, elegant syntax. We’ve already laid the foundation — freeing ...

Laravel Promptsとは

Laravel Promptsは、WEBと同様の入力コンポーネント

  • テキストボックス
  • ラジオボタン
  • チェックボックス

等を使って、CLI上で対話入力を可能にするパッケージです。

リアルタイム検索結果からの選択入力も可能です。

Laravel11ではデフォルトでインストールされますが、

Laravelを利用しないPHPプロジェクトにも導入可能です。

この記事のゴール

Laravel Promptsをインストールし、

ピュアPHPでtextプロンプトを実装をします。

実行結果の確認まで行います。

前提条件

  • PHP8.2以降インストール済
  • Composerインストール済

これからやる作業

  • PHP新規プロジェクト作成
  • Laravel Promptsインストール
  • PHPコード作成
  • PHPコード実行

PHP新規プロジェクト作成

作業ディレクトリ内にPHP新規プロジェクト用のフォルダ「laravel-prompts」を作成して中に入ります。

mkdir laravel-prompts
cd laravel-prompts

Laravel Promptsインストール

Laravel Promptsをインストールします。

composer require laravel/prompts

textプロンプトの基本的な使い方

▼PHPコード(src/text.php)

<?php

require_once(__DIR__ . '/../vendor/autoload.php');

use function Laravel\Prompts\text;

$name = text('あなたの名前を入力してください。');

echo "{$name}さん、こんにちは!\n";

▼実行結果

ラベルとテキストボックスが表示され入力待ち状態になります。

適当に入力して[Enter]で確定します。

入力した内容が変数「$name」に格納され、

標準出力に表示されました。

プレイスホルダーの設定

▼PHPコード

$name = text(
    label: 'あなたの名前を入力してください。',
    placeholder: 'ななし はらぺこ',
);

▼実行結果

プレイスホルダーがグレーで表示されています。

デフォルト値、補足説明の追加

▼PHPコード

$name = text(
    label: 'あなたの名前を入力してください。',
    placeholder: 'ななし はらぺこ',
    default: 'やまだ たろう',
    hint: 'ここで入力した名前はプロフィールに表示されます。',
);

▼実行結果

デフォルト値が入力欄に、補足説明が下に表示されています。

入力必須設定

▼PHPコード

$name = text(
    label: 'あなたの名前を入力してください。',
    placeholder: 'ななし はらぺこ',
    default: 'やまだ たろう',
    hint: 'ここで入力した名前はプロフィールに表示されます。',
    required: true,
);

▼実行結果

入力しないで確定すると「Required.」と警告が出ます。

入力必須メッセージ設定

▼PHPコード

$name = text(
    label: 'あなたの名前を入力してください。',
    placeholder: 'ななし はらぺこ',
    default: 'やまだ たろう',
    hint: 'ここで入力した名前はプロフィールに表示されます。',
    required: "名前の入力は必須です。",
);

▼実行結果

指定した文字列が警告として表示されます。

バリデーション

▼バリデーション(アロー関数)

$name = text(
    label: 'あなたの名前を入力してください。',
    placeholder: 'ななし はらぺこ',
    default: '',
    hint: 'ここで入力した名前はプロフィールに表示されます。',
    required: "名前の入力は必須です。",
    validate: fn (string $value) => match (true) {
        mb_strlen($value) < 3 => '3文字以上で入力してください。',
        mb_strlen($value) > 40 => '40文字以内で入力してください。',
        default => null
    }
);

▼バリデーション(無名関数)

$name = text(
    label: 'あなたの名前を入力してください。',
    placeholder: 'ななし はらぺこ',
    default: '',
    hint: 'ここで入力した名前はプロフィールに表示されます。',
    required: "名前の入力は必須です。",
    validate: function (string $value) {
        return match (true) {
            mb_strlen($value) < 3 => '3文字以上で入力してください。',
            mb_strlen($value) > 40 => '40文字以内で入力してください。',
            default => null
        };
    }
);

▼実行結果(アロー関数も無名関数も同じです)

3文字未満だと警告が出ます。

40文字を超えても警告が出ます。

コマンド実行の強制終了

入力待ち状態で[Ctrl]+[C]を押すと強制終了できます。

プレイスホルダーや入力値は取り消し線表示され、

「Cancelled.」と表示されます。

今回は以上です。

次回はpassword、confirm、select、multiselectの使い方です。

コメント

タイトルとURLをコピーしました