PHP
laravel

Laravelの予約クラスに注意する

Laravel5.1で何も考えずクラスを作ったら予約クラスと被って変なエラーに遭遇したのでその記録です。

LarabelでMemberというサービスクラスを作成して

<?php
namespace App\Http\Controllers;

use App\Services\Member;

class Cart {
    ...
}

という感じで使おうとすると開発環境では正常に動作しましたが、本番環境にデプロイ(git checkout)すると

PHP Fatal error: Cannot use App\Services\Member as Member because the name is already in use in /var/www/appname/app/Http/Controllers/cart.php on line 3

というエラーが発生しました。

どうやらLaravelには、App\Member;というクラスがありそいつと干渉しているようです。

でも開発環境で起こらず、本番で発生して、20分後に勝手に解消したのでキャッシュ的な要因だと思いますが、時間なくクラス名をMembersに変更するとで解決しました。

何かご存じの方ご教示よろしくお願いします!

TODO

PHPのOPcacheが噛んでる的な話もあり、こんなライブラリをあとで検証する。

https://github.com/appstract/laravel-opcache