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

アプリケーションアーキテクチャについて 〜既存のMVCに関して〜

今回はアプリケーションのルーター以降のアーキテクチャに関して。主にMVCなどについて説明したいと思います。 Contents1 MVC(Model,Controller,View)1.1 トランザクシ …

no image

mb_convert_encodingに関して(文字コードの自動検出やその周辺)

以前Perlでもやりましたが、文字コードの自動検出に関して。 ちなみにcp932=SJIS-WINです。 参考リンク Perlでの動的改行コード読み込みに関して+cp932ネタ PHPの場合、mb_d …

no image

jQuery modalダイアログについて&重複時間処理

Contents1 jqueryモーダルダイアログ1.1 あらかじめ読み込むライブラリ1.2 ソース本体1.2.1 Html側1.2.2 Javascript側1.2.3 参考リンク2 重複時間につい …

no image

PHPでの切り上げ誤差問題

PHPを初めて、4年近くたちますがいまだに知らんことが多いですね(爆) 本日は、

になるという非常にビックリな仕様に遭遇・・・ なにや …

no image

リクエストとレスポンスについて

Laravelでリクエストとレスポンスにはそれぞれ元からクラスが当てあられております。

上記のようなメソッドでリクエストパラメータ自体 …

アーカイブ