概要
LaravelにLarastanを導入しチェックレベル2でコードをチェックした。
警告が出たが、対象のファイルに問題は見当たらなくてちょっと詰まったので簡単にまとめる。
警告内容
------ --------------------------------------------------------------------------------------------------------
Line Http/Controllers/Settings/IndexController.php
------ --------------------------------------------------------------------------------------------------------
7 Class App\Http\Controllers\Controller referenced with incorrect case: app\Http\Controllers\Controller.
🪪 class.nameCase
12 Class App\Http\Controllers\Controller referenced with incorrect case: app\Http\Controllers\Controller.
🪪 class.nameCase
------ --------------------------------------------------------------------------------------------------------
警告対象のファイル
とりあえず警告の対象のファイルを見てみる。
use App\Http\Controllers\Controller;
は特段問題ないように思える。
app/Http/Controllers/Settings/IndexController.php
<?php
declare(strict_types=1);
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use Illuminate\Contracts\View\View;
class IndexController extends Controller
{
/**
* Handle the incoming request.
*/
public function __invoke(): View
{
return view('settings.index');
}
}
原因
継承元のapp/Http/Controllers/Controller.php
の名前空間の記載に問題があった。
app/Http/Controllers/Controller.php
<?php
declare(strict_types=1);
namespace app\Http\Controllers;
abstract class Controller
{
//
}
確かに名前空間の指定でappの頭文字が小文字のaになっている。本来はAになることが正しい。
解放方法
継承元のapp/Http/Controllers/Controller.php
の名前空間の指定を下記の様に指定したらエラーは解消された。
app/Http/Controllers/Controller.php
<?php
declare(strict_types=1);
namespace App\Http\Controllers;
abstract class Controller
{
//
}