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

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

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

no image

PHPでの日付関数の扱い方

このブログの投稿数ももう少しで150近くになりました。 で、9割以上がJavaなんですが、私はPHPのスクールを運営しています(笑) ということでPHPのスキルを忘れてはいけないということで、今日はち …

no image

cakePHPでの直SQL

今回はCakePHPにて直のSQLを書く方法を。 cakePHPにて大概の処理はもともと備わっているコマンドでなんとかなりますが、まれに直SQLを書いたほうがらくなこともあります。 書き方その1 [c …

no image

テンプレートエンジンTwigについて

SmartyにかわるテンプレートエンジンとしてTwig(ツィッグ)を勉強中。 といってもテンプレートエンジンなので基本的なことはほとんど一緒っぽいですが。 Contents1 インストール2 基本的な …

no image

WordPressでのアイキャッチ画像

このブログと並行して更新しているガチンコ塾のブログですが、アイキャッチをブログ内にいれました。 画像をいれると文章の見やすさもだいぶ変わってくると思うので、アイキャッチの入れ方についてここに書いておき …

アーカイブ