PCS開発チーム

PCS開発チーム

(new Controller)は絶対に使ってはいけない

最近Controllerをインスタンス化してる質問をよく見るけど誰がこんな間違ったことを教えてるんだろう。

public function toggleChecked(): void
{
    (new ScaleController())->index();
}

https://stackoverflow.com/questions/79036843/how-to-show-blade-view-from-within-livewire-handler

  1. 「LaravelはMVC」という間違った思い込みがすべての元凶。
  2. MVCのどこにコードを書くかって考えしかない。大抵Controllerに書く。
  3. Controllerに書いたコードを使い回すためにインスタンス化してしまう。

新規勢がよくやる典型的な間違いなのでさっさと学習して次の段階に進むしか解決方法はない。
「MVCのどこにコードを書くか」ではなく「MVC以外にも自由に新しいクラスを作っていい」