LoginSignup
0
0

More than 3 years have passed since last update.

【備忘録】Eloquentモデルの名前空間が他の階層で重複している時("Cannot declare class 〜, because the name is already in use")

Last updated at Posted at 2020-09-14

クラス名重複してるよ〜のエラーメッセージが出る場合...

①対処法

1:本当に記述している文字列が正しいか確認する
2:namespaceの階層が正しいか確認する(\App\Models\temp...)
3:asで別名を付与(詳細は以下参照)

②それ以外の場合 とは?

あまり多くないパターンだと思いますが、自分が修正を担当しているプロジェクトのModelsの階層がこんな感じでした。

\APP
 \temp.php(フルパス:\APP\temp.php)

 \Models
  \temp.php(フルパス:\APP\Models\temp.php)

最初見た時、Laravelはこんなふうになってるのかーと思って特に気にしませんでした。
(Eloquentモデルと通常のModelなので役割はそもそも違います)
が、後々機能を追加するとなったときになって困りました。

use APP\Model\Temp
use APP\Temp

Cannot declare class〜〜〜〜, because the name is already in use

これはNGなんですね...。
記述や文字列の誤りがない、階層が違う、としても同名だとそもそもインポートNGのようです。

use APP\Model\Temp
use APP\Temp as eloquent_temp

こんな感じに別名であれば解決します。
なので正確には同名クラスからのインポートがNGというわけではないです。

※そもそも3のパターンは命名の時点でおかしいので、Eloquentモデルの作成時にはmodelと同名にするべきではないです!

0
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
0
0