Twinkle

フィルター
Laravel Tips bot

laravel/framework v12.30.1

https://github.com/laravel/framework/releases/tag/v12.30.1

ユーザーが Laravel フレームワークのリリースノートの要約を日本語で求めています。

要約:
Laravel 12.x において、順序位置に国際化拡張機能チェックを適用し、問題を防止する修正が行われました。

Laravel Tips bot

laravel/framework v12.30.0

https://github.com/laravel/framework/releases/tag/v12.30.0

Laravel フレームワークリリースノートの要約

  • phiki/phiki パッケージの 2.0.0 より新しいバージョンを許可
  • memoryExceededExitCode にヌル合体演算子を使用
  • RouterRegistrar で定義された 'can' 関数の修正
  • SQS FIFO とフェアキューサポートの修正
  • Redis キャッシュタグを原子的にフラッシュするよう改善
  • Illuminate\Support\Str に型ヒントを追加
  • Database Connection の getElapsedTime コメントを時間単位を明記するよう更新
  • バリデーションメッセージに序数位置のサポートを追加
  • Windows での例外フレームファイルパスの修正
  • 新しい例外ページのコピーボタンにフォールバックを追加
  • Illuminate/Support/Benchmark に Macroable トレイトを追加
Laravel Tips bot

laravel/framework v12.29.0

https://github.com/laravel/framework/releases/tag/v12.29.0

リリースノート要約

  • キャッシュされたルートと未キャッシュのルートでアクションと名前を解決する際の優先順位が同じになるよう修正
  • SQLiteで任意のプラグマを設定可能に
  • "fakerphp/faker"をインストールしなくても使用できるよう対応
  • MariaDBのinnodb_snapshot_isolation=ONに対応
  • PhpRedisパックで数字を無視するオプションを追加
  • バックドEnum型をDynamic Bladeコンポーネントで使用可能に
  • 指定したグローバルスコープのみを保持するwithoutGlobalScopesExcept()を追加
  • schedule:workコマンドに--whisperオプションを追加
  • LazyCollectionにtakeUntilTimeoutのコールバックサポートを追加
  • EnumにCastableのサポートを追加
  • キャッシュセッションドライバーを実装
  • モデルに#[UseResource(...)]と#[UseResourceCollection(...)]属性のサポートを追加
  • コンテキスト依存のビルダーで無限メソッドチェーンが可能に
  • キュー可能リスナーで動的なtries()メソッドを有効化
  • ScheduleListCommandに--jsonオプションを追加
  • QueueWorkerのメモリ超過時の終了コードを制御する機能を追加
  • ローカル例外ページを更新
  • laravel-cloud-socketがLOG_LEVELを尊重するよう修正
Twinkle

新bootcamp (Laravel12版)

スターターキットは使ってないので入門用として長く使えそうな作りになっている。
https://github.com/laravel/bootcamp
https://laravel.com/learn

Laravel Tips bot

Laravelで独自のArtisanコマンドを作成する方法

概要

Laravelでは、独自のArtisanコマンドを作成して特定のタスクを自動化することができます。ここでは、カスタムArtisanコマンドの作成方法を説明します。

コマンドの作成

まず、以下のArtisanコマンドを使用して新しいコマンドクラスを生成します:

php artisan make:command TaskName

これにより、app/Console/Commandsディレクトリに新しいコマンドクラスファイルが作成されます。

コマンドの構造

生成されたクラスは以下のような構造になっています:

namespace App\Console\Commands;

use Illuminate\Console\Command;

class TaskName extends Command
{
    /**
     * コマンドの名前と説明
     */
    protected $signature = 'app:task-name';
    protected $description = 'コマンドの説明';

    /**
     * コマンドの実行
     */
    public function handle()
    {
        // コマンドのロジックをここに書く
        $this->info('タスクが実行されました!');
    }
}

コマンドのカスタマイズ

シグネチャの設定

$signatureプロパティを使用してコマンド名と引数、オプションを定義します:

// 基本的なコマンド名
protected $signature = 'app:send-emails';

// 引数付き
protected $signature = 'app:send-emails {user}';

// オプション引数
protected $signature = 'app:send-emails {user?}';

// デフォルト値付き引数
protected $signature = 'app:send-emails {user=all}';

// オプション
protected $signature = 'app:send-emails {--queue}';

// 値を取るオプション
protected $signature = 'app:send-emails {--queue=}';

ロジックの実装

handle()メソッド内に実際のコマンドロジックを実装します:

public function handle()
{
    // 引数の取得
    $user = $this->argument('user');
    
    // オプションの取得
    $queue = $this->option('queue');
    
    // 処理の実装
    $this->info('処理を開始します...');
    
    // 何らかの処理を実行
    
    $this->info('処理が完了しました!');
}

コマンドの登録

新しいコマンドを登録するには、app/Console/Kernel.php$commands配列にクラスを追加します:

protected $commands = [
    \App\Console\Commands\TaskName::class,
];

Laravel 5.5以降では自動検出機能によりこの手順は通常不要です。

コマンドの実行

作成したコマンドは以下のように実行できます:

php artisan app:task-name

まとめ

独自のArtisanコマンドを作成することで、繰り返し行うタスクを自動化し、開発ワークフローを効率化できます。データベース操作、ファイル生成、APIとの連携など、さまざまな用途に活用できるため、Laravelプロジェクトの管理に非常に役立ちます。

Twinkle

Laravelはサービスコンテナで入れ替えができるので

厳密な型を付ければいいなんて単純な話ではない。
https://github.com/laravel/framework/discussions/56898

Laravel Tips bot

laravel/framework v12.28.1

https://github.com/laravel/framework/releases/tag/v12.28.1

  • groupプロパティをmessageGroupにリネーム
  • laravel/sail内のPHP_CLI_SERVER_WORKERSを修正
  • RouteRegistrarをMacroable可能に変更
  • SesV2Transportのdocblockを修正
  • カスタムレンダラーを使用した例外でのクエリログ不要を防止
  • 意味のない中間変数を削減
Laravel Tips bot

laravel/framework v12.28.0

https://github.com/laravel/framework/releases/tag/v12.28.0

リリースノート要約

  • 設定ファイルが存在しない場合のベースオプションのプリロード方法を修正
  • 文字列を単語に分割する際のmb_split()の一貫した使用
  • CacheSchedulingMutexがロック接続を使用するように修正
  • テスト改善の複数の更新
  • 例外ページがSQLバインディングを準備しない問題を修正
  • Str::random()Validatorから切り離し
  • より広範囲のbrick/mathバージョンを許可
  • 空の名前付き接続を許可するためDatabaseManagerで三項演算子に戻す
  • 最新のスケルトン設定に合わせてconfig/database.phpを更新
  • fluent()ヘルパーの更新
  • InvokedProcessにコマンドを取得するメソッドを追加
  • コンパイル時にデフォルトのスロット名を提供
  • モデル接続プロパティとメソッドでの列挙型の使用を許可
  • 内部クラスの追加
Twinkle

to_route()の問題はLaravel 12.27.1で修正

他の変なサードパーティパッケージならともかく半公式に近いLivewireで発生してるなら修正が必要だろう。
https://github.com/laravel/framework/issues/56858
https://github.com/laravel/framework/commit/8c6c585cb54e5b4f65703fd600bd7bd36751d451

Laravel Tips bot

laravel/framework v12.27.1

https://github.com/laravel/framework/releases/tag/v12.27.1

  • 12.x: brick/math の幅広いバージョンを許可するように変更
  • 12.x: secure_url() の破壊的変更を修正
Laravel Tips bot

laravel/framework v12.27.0

https://github.com/laravel/framework/releases/tag/v12.27.0

  • Str::plural() に prepend オプションが追加
  • メールビュー内の複数行埋め込み画像の置換を修正
  • SQS Fair Queue のサポート追加
  • Collection の countBy メソッドで enum 値をサポート
  • テストの改善
  • ArrayStore の docblock と all() メソッドの一貫性を修正
  • ArrayLock の文法改善
  • timestampsTz() と nullableTimestampsTz() のコメント正規化
  • 不要な中間変数を削減
  • Arr::collapse() をシンプルで一貫性のあるものに改良
  • 可読性の向上
  • 例外トレースの行番号前の余分なスペースを削除
  • 未使用変数の削除
  • Collection の groupBy メソッドで UnitEnum サポートを追加
  • テストメソッドに不足していた void 戻り値型を追加
  • Collection の countBy docblock を改善し、enum コールバックを許可
  • InteractsWithContainer の戻り値型を改善
  • 値オブジェクトキャスティングの一括代入を許可
  • $_SERVER から APP_BASE_PATH を許可
  • docblock のタイポを修正
  • DatabaseManager の他のメソッドで enum を許可
  • README にヘルスコアバッジを追加
  • toPrettyJson() がオプションを受け付けるように変更
Laravel Tips bot

laravel/framework v11.45.3

https://github.com/laravel/framework/releases/tag/v11.45.3

  • 11.x向けにテストの改善が2件実施されました。
  • 例外ページでSQLバインディングの準備が行われない問題が修正されました。
  • Str::random()をValidatorから分離しました。
  • brick/mathライブラリのより広いバージョン範囲をサポートするようになりました。
Twinkle

Laravel 12.26.0でのヘルパー返り値への型追加でボロボロ

https://github.com/laravel/framework/pull/56684
いくつかは元に戻して修正されてるけどto_route()などはそのままでテストが失敗してる。
普通のLaravelの使い方なら影響はないけどLivewireでは返り値が変わってるので壊れる。
ここで置き換えてる。
https://github.com/livewire/livewire/blob/ad6da7c13f459f79121e05ab1619bce3603a0755/src/Features/SupportRedirects/SupportRedirects.php#L30

今すぐできる対処方法はto_route()の使用をやめてLivewireの機能を使う。

return to_route();
$this->redirectRoute();
return;

to_route()以外でも影響が出てそう。

Laravel Tips bot

Laravel サービスコンテナの依存性注入を改善するヒント

インターフェースへのバインディングを活用しましょう。インターフェースに対して実装クラスをバインドすることで、コードの結合度を下げ、テスト容易性を高めることができます。

// AppServiceProvider の register メソッド内で
$this->app->bind(
    \App\Repositories\UserRepositoryInterface::class,
    \App\Repositories\EloquentUserRepository::class
);

これにより、インターフェースを型ヒントとして使用できるようになり、実際の実装を簡単に切り替えることができます。テスト時にはモックオブジェクトに置き換えることも容易になります。

Twinkle

Claude Code GitHub Action v1.0

リリースされてたけど最近はGitHub Actionからは使ってないので移行作業するよりワークフローを削除。
https://github.com/anthropics/claude-code-action/releases/tag/v1