1
0
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

つい忘れがちなuseとかnamespaceのエラーをさらっともう一度

Posted at

あなたは Target class [App\Http\Controller\UserController] does not exist. とエラーを起こしたことはあるだろうか

どうせ予測変換が自動で補完しているから覚えるだけ無駄。そう思った瞬間にあなたはこのエラーに出会う確率はぐっと高くなる。
仮に見出しのようなエラーがでたとしてもuseやnamespaceによる原因だとは考えもしないから「コードがどっか悪いのかな?」と全然違う場所を調べて時間を使ってしまう。(かつての自分)

確かに自動補完で勝手に書いてくれるならそれはそれで嬉しいし楽だ。しかし、もしControllersフォルダの中にフォルダを作成してその中にControllerファイルを入れた場合、もちろん自動補正なんて効いちゃくれない(こんな形で補正してくれるプラグインがあるなら教えてほしい)。

自分も全てを理解しているわけではないが、と予防線を張りつつありがちなミスを列挙していこう。

よくやりがちなミス

パスのタイポに気付けない

はい早速でました。見出しのエラー文の原因がこれです。
use 文を書き換えててよく犯すミスがこちらです。

use App\Http\Controller\UserController; 誤

一見正しそうに見えますがControllerはControllersが正しいです。といってもこれを見ているあなたは違いが腑に落ちていないでしょう。
おすすめは正しそうな似ているパスをコピーして下の行に貼ってみることです。1文字違うから視覚的におかしいと理解できるでしょう。

use App\Http\Controller\UserController;  誤
use App\Http\Controllers\UserController; 正

そもそもパスの階層がおかしい

ありがちなミスです。UserControllerをUserフォルダに入れてしまってuse文を書き忘れるミス

use App\Http\Controllers\UserController; 誤
use App\Http\Controllers\User\UserController; 正

また、このミスはパスを書き換えるから誤って先ほどのSを消しちゃってまたエラーを作っちゃう無限ループが発生する地獄になるパターンあり。気を付けよう。

そもそもnamespaceをどこに書くのかわかっていない

namespaceはコントローラーに書きます。(ただフォルダ名まででおk)
もちろんフォルダ階層が変わるなら修正も必要です。

Facadesを読み込んでない

ファイル内でDB::~~など書いててuse文を書き忘れちゃったパターン。Facadesを使う場合はuse文に一言書きましょう。

ミスは誰でもしてしまう事です。とにかくロジックを理解しようとすることは立派なことではありますが、上記のようなことを疎かにしてエラーが発生することは多々あります。エラーが起こった原因とその対処法をまとめておくのも良いでしょう。良いプログラミングライフを。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0