プラグインを作ったりカスタマイズを行っていくと「The file was found but the class was not in it, the class name or namespace probably has a typo.」と言うエラーに遭遇することがあります。
RuntimeException in DebugClassLoader.php line 241:
The autoloader expected class “Plugin\PluginName\XXXXXXXX” to be defined in file “/var/www/vendor/composer/../../app/Plugin/PluginName/XXXXXXX.php”. The file was found but the class was not in it, the class name or namespace probably has a typo.
ファイルがあるけどクラスがない!typoじゃないの?と言われていますね。
ファイル名の打ち間違い、ネームスペースの間違いなど単純なミスであることが多いです。クラス名が一部だけ大文字小文字を間違っているなど。
IDEの方でエラーが出ることもあると思いますので注意深く観察したいものです。
EC-CUBE4系や3系ではpsr-4に基づき、クラスを読み込んでいきますが、作成したファイルがpsrの規則に則っておらずPHPファイルが存在するがファイル内にクラスが存在しないために発生するエラー(RuntimeException)です。
EC-CUBE開発者の方はクラスもIDEやコマンドで作成することが多いと思いますが、たまにファイルを手動で作りクラス名が1文字間違っていたりするために発生していることがほとんどかと思います。
デバッグモードでなければ無視されるはずなので気づかないことも多いかもしれません。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。