ラムネグから一言:寝る前に読むとくだらなすぎて逆に寝れると好評なすごい適当なブログをこっちではじめてます.
laravel、飛び飛びですがけっこう長い事遊んでて、それでもまだファザードとかプロバイダーとかよくわかってないんですよね。
んでそれとは別に自分で作った独自クラスのファイルをコントローラーで使う必要が出てきて…(別の問題、と書きましたが調べてると本来はこういうオリジナルクラスを使う時こそファザードとかそういうのを使ってやるべきらしい…、ふーん)。
てことでここでは自分で作った独自クラスのphpファイルをlaravelのコントローラーでuseで呼び出して使う方法を紹介しますね。大きく分けると3つキモとなるポイントがあります。
その①「app」フォルダの下に置く事!
laravelにはapp下に置いてるphpを自動で読み込んでくれる仕組みがあるようなんです。
てことで独自クラスを作った場合も「app」フォルダの下に置くようにしましょう。
ただ、なにもappフォルダ”直下”におく必要はなくて「app/Libs」みたいに自分でオリジナルのフォルダを作ってその中に独自クラスを記述したphpファイルを置けばOK。
(ググったときになんかみんなLibsっていう名前のフォルダにしてたんでそのまま真似させてもらいました。)
その②クラス名とファイル名は同じに&namespaceはフォルダ構造と同じに
独自クラスを書いたphpファイルのファイル名と、その中に書いてあるクラス名が同じになるようにしてください。あと大文字にしてくださいね。これはphpのルール…なんだと思いますが、私自身phpでクラスを作る事が普段ないんでよくわかってません。…ゴメンナサイ。
さらに。こちらはlaravelのルールだと思いますが、namespaceを「App\Libs\○○」にしてください。なんで「A」大文字なんだろとか気になりますが、とりあえず実際のフォルダ構造と同じようにしておけばOK。
その③「composer dump-autoload」を実行する事
上の方でlaravelにはappの下のクラスを自動で読み込む仕組みがあるよ!って書いたんですが、自分で作った独自クラスの場合、いったんlaravelにその存在を見つけてもらわないとダメみたいです。
私はここで2時間くらい詰まって、ずーっとlaravelに「Not Found」「そんなクラスないよ」って怒られ続けました。
んでそのlaravelにapp以下のファイルを検索してもらって、次回から自動で読み込んでもらうようにする指示が「composer dump-autoload」というワケ(もっとくわしく書くと「composer dump-autoload」を行うことで「vendor/composer/autoload_classmap.php」というlaravelが自動で読み込む対象にしているファイル一覧に独自クラスが追加されるようになります)。
コマンドプロンプト上で実行しましょう。私の場合、処理に5分くらいかかった気がします。
まとめ
今回はlaravelで独自クラス作って、それをコントローラー上でuseして使う方法を紹介しました。
不勉強なのがいけないんですがlaravelみたいなフレームワーク?を使っているとそれがphp自体のルールなのかlaravelのルールなのかわからなくなることが多いんですよね。もっと勉強しないといけないですね。
【おしらせ、というか完全なる宣伝】
文体がもうぜんぜん適当すぎてあれだけどものすごい自由に書いてるブログ「檸檬だくだく」もよろしく.寝る前に読める恐ろしくくだらないやつです.
こんなにも一ミリも目を引かれないタイトルを取り扱ってます: ココア20g / ハイチュウとかってさ / なぜ米と小麦を食べようと思ったのかの謎 /