ルール
クラス 名前 必須 ファイル名 ファイル名と一致する必要があります。
多くの 言語 は クラス の名前
に マッチする ファイル名 に正確に一致させる、 あるいは でなければ
失敗する 大文字と小文字を区別する 大文字小文字を区別する ファイルシステム (Linux)。
サポートされている言語 PHPはじめに
PHP の PSR-4 オートロードでは、クラス名は大文字小文字を含めてファイル名と正確に一致する必要があります。クラス名が ユーザーリポジトリ でなければならない。 ユーザーリポジトリ.phpではない。 ユーザーリポジトリ.php.これは、WindowsやmacOSのような大文字小文字を区別しないファイルシステム上では動作するが、Linuxサーバー上では動作せず、本番環境で "Class not found "エラーを引き起こす。
なぜそれが重要なのか
本番環境での失敗:ファイルシステムの大文字と小文字が区別されるLinuxサーバーで、名前の不一致がオートロードの失敗を引き起こす。ローカルで動作しているコードが本番で動作しなくなり、緊急のホットフィックスが必要になったり、ダウンタイムが発生したりします。
PSR-4 準拠:最近の PHP フレームワークは PSR-4 オートロードに依存しています。命名規約に従わないクラスはオートロードできず、 依存性注入やサービスコンテナ、フレームワークの機能を壊してしまいます。
コード例
非準拠:
<?php
// File: userrepository.php
namespace App\Repositories;
class UserRepository
{
public function findById($id)
{
return User::find($id);
}
public function save(User $user)
{
return $user->save();
}
}
なぜそれが間違っているのか: クラス名は ユーザーリポジトリ しかし、ファイル名は ユーザーリポジトリ.php (小文字)。PSR-4オートローダーは以下を検索します。 ユーザーリポジトリ.php 大文字と小文字を区別するLinuxのファイルシステム上では、それを見つけることができず、本番で致命的なエラーを引き起こす。
✅ 準拠:
<?php
// File: UserRepository.php
namespace App\Repositories;
class UserRepository
{
public function findById($id)
{
return User::find($id);
}
public function save(User $user)
{
return $user->save();
}
}
なぜこれが重要なのか: ファイル名 ユーザーリポジトリ.php はクラス名に一致する。 ユーザーリポジトリ をケースを含めて正確に指定します。PSR-4オートローダーは、どのようなファイルシステム上でも確実にクラスを見つけ、ロードすることができるため、環境固有の不具合を排除し、開発から生産まで一貫した動作を保証します。
結論
プロジェクトの開始時から、ファイル名とクラス名の厳格なマッチングを強制します。クラスを作成する際に、自動的に正しいファイル名を付けるようにIDEを設定する。CI/CDパイプラインで自動チェックを使用して、デプロイ前にミスマッチを検出する。適切な命名に5分費やすだけで、本番環境でのオートロードの失敗を何時間もデバッグする必要がなくなります。
.avif)
