skillup

技術ブログ

PHP

composer.jsonのautoloadに関して

投稿日:

昔PHPでは他のファイルを読み込む時にはrequire_onceなどとすることが一般的でした。

で、クラスが増えてくるとこれがとんでもない量になってくるんですよね・・・

その時の代替案として_autoload関数やspl_autoload_registerなんかを昔使っていました。

これらを使っていると、クラスがインスタンス化されるときに未定義のクラスを呼ばれた場合、自動で特定の関数を呼びだし、require_onceをここでまとめておくと、一括で呼び出せる・・という仕組みです。

phpの__autoload関数とかspl_autoload_registerについて理解したのでまとめておく

で、フレームワークを使っていると上記のような仕組みを自前で作ることがなかったんで、あまり気づかなかったんですが、composer.jsonで下記のように書いておくと、実はそれすら必要ありません。

上記のように書いておき、 composer dump-autoload を実行します。

そうすると vendor\autoload.phpを読み込むことで
例えば src\Model\User.phpというクラスは、 use App\Model\Userと記述しておけばspl_autoload_registerなどの関数は不要です。

これは composer dump-autoloadのコマンドを打つことで
vendor配下にクラスをマッピングしたプログラムができるからです。

上記の場合だと具体的には vendor/composer/autoload_psr4.phpというファイルに記述されています。

いやーcomposer.jsonとってもわからんこと、知らないで使っていることがいまだにありますね・・・

PHPのオートロード(autoload)

-PHP

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

composer最低保証のバージョンを管理

自分の開発端末ではPHPのバージョンが7.1何ですが、上げなければいけないサーバーのバージョンが7.0だったりして、

みたいなエラーが …

no image

ループ処理+switch

PHPでちょっと小ネタ foreachやwhileのようなループを抜けるときにcontinueを使うんですが、その中にswitchが入っていると、switchに対してのcontinueがきいてしまって …

no image

cakePHPでのCSVダウンロード

cakePHPにてCSVのダウンロードなんぞを。 以前このエントリーでCSVダウンロードに関しては取り扱ったのですが、 ボタンを押す ファイルダイアログが開く パスを選ぶ 意図したデータを正常にダウン …

no image

dateTimeの使い方

phpの日付ライブラリであるdateTimeについて。 Contents1 過去のリンク2 頻出表現3 リンク 過去のリンク CakePHP3 日付ライブラリ(Time)について http://ski …

no image

phpの時分秒+cakePHPのupdate

ちょっと小ネタ集になります。 Contents1 PHPで秒→時分秒変換2 cakePHPでのupdate PHPで秒→時分秒変換 PHPで秒数から時分秒に変換するプログラムです。 汎用的かなと思った …

アーカイブ