はじめに
この記事の対象者は、「PHPはやったことあるけど、フレームワークはあまり使ったことないよ」って人を対象にしております。
フレームワークの構成を壊さずにプロジェクトを遂行できるように少し豆知識を。
と、言う筆者も実は昔。。。
あんまり理解せずにフレームワークの構成を壊していろいろ作っちゃっていました。。。
しっかり構成に従って効率的にコーディングしていきましょう!!!
その上で重要になるのがいろいろありますが、今回紹介するのはcomposer dump-autoloadです。
フレームワークを使用せずにPHPでスクラッチ開発をしていると、よくソースの頭に書くものがありますよね?
それはコチラ!
require('ファイル名');
require_once('ファイル名');
Laravelなどフレームワークを使用してコーディングする際は、上記の記述は不要です。
他のクラスを参照したくても上記の記述は書いちゃダメ。
じゃ、どうすればいいの??ってなりますよね?
次に進みます。
ダンプオートロード
なんかカタカナで見出し書くとダサく見える。。。
それはさておき。
よく使うコマンドとして
$ composer dump-autoload
があります。
この海のものとも山のものとも知れず何者か?
これは、わかりやすく言うと、冒頭に紹介した「requireなんとか」のコードを不要にしてくれるものです。
例えば、何か共通的に使いたいクラスを作ったとします。
そのクラスを使いたいソースの冒頭に「requireなんとか」と書きまくって対象のクラスを読み込む。
これが、従来のスクラッチ開発。
と、なると。。。
・クラスを削除した。
・ファイル名を変更した。
・あちこちで使いたい。
全部の「require」の記述を変更しなくてはなりません。
そこで便利なのが、「composer dump-autoload」
このコマンドを実行すると、Vender配下のとあるファイルに全ての*.phpファイルのパスが自動的に記述されます。
そして、何がオイシイノ?
それは、requireなんとかを使用無くても、どこからでも対象のソースやクラスを呼び出せるのです。
また、クラスを増やした、ファイルを増やした、変更した。
そんな場合も「composer dump-autoload」を打つだけです。
変に「require」を使用するときっといつかバグるでしょう。
そしてメンテナンス性に欠けます。
そのため、「require」は忘れてください。
「require」の単語を書くのは、バリデーションチェックの定義くらいです。
補足
独自にapp\Logic\Sample
など各機能毎にフォルダ分けしてクラスを分けたい場合もあるでしょう。
そんなときは、composer.json
ファイル内にあるclassmap
の配列の箇所に作成したフォルダのパスを追記してください。
そうすると、独自に作成したフォルダもcomposer dump-autoload
で拾ってくれます。
以上、「なんかソースが無いってエラーなった」ってときは、まずは今回紹介したコマンドを打ってみましょう。