ラボ > Laravel、Lumen:エラー関連

Laravel エラー:Cannot declare class

「Log::info()」を使うと「エラー:Cannot declare class」が出てきたのでその対応

作成日:2019-06-07, 更新日:2022-12-22

経緯

▼目的
・ログ出力を試したい

▼流れ
・適当なサイトをいくつか見て・・・記載方法を調べる

▼ソース

use Illuminate\Support\Facades\Log;
~ 略 ~
\Log::info(〇〇〇〇);

▼結果(src\storage\logs\〇〇〇.log)

local.ERROR: Cannot declare class App\Helpers\Lib\Log because the name is already in use {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 64): Cannot declare class App\\Helpers\\Lib\\Log because the name is already in use at 〇〇〇〇)

調査

Cannot declare」とあるからどっかでクラス名が重複しているハズ
・・・余計なモノを入れていないので重複していないようにしか見えない。

名前空間

さらに調べるとLaravelの言う「Cannot declare」は「namespace」が間違っていても出るそうだ。

今一つ「namespace」と「use」が理解できないんだが・・・「use Illuminate\Support\Facades\Log;」ってトコがダメなんだろう。
ひとまずPATHに「Log」がいるかチェック

Illuminate

「use」の「Illuminate」は「vendor\laravel\framework\src\Illuminate」を指すので、その下に「Support\Facades\Log」がいるかチェック。
→いた。

対応

「use」の使い方を理解していないんだが・・・
・「use Illuminate\Support\Facades\Log;」から「Log」を取って
・「use Illuminate\Support\Facades;」
とすればいいんじゃない?と推測。

▼結果

use Illuminate\Support\Facades;
~ 略 ~
\Log::info(〇〇〇〇);

→ひとまず動いたのでコレでOKとする。