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

インメモリデータベース redis

インメモリデータベースのredis(レディース)について。 キャッシュとして以前はmemcachedを使っていましたが、いろいろ多機能ということでredisをちょっと触ってみようかと。 Content …

no image

cakePHP CSVのインポートとエクスポート

本日もcakeネタです。 CSVインポート&エクスポート CSVのインポートとエクスポートについて。 かなりいろいろなプラグインがあるようですが、一番楽なのはbehaviorを使う手法のようです。 a …

no image

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

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

みたいなエラーが …

no image

CI/CDに関する取り組み

CI/CDに関して知識としては5年以上昔から持ってましたが、実際にプロジェクトの中に取り組むことができるようになったのはつい最近なので、取り込みが現実的なものに関してどのように取り組んでいくかといった …

no image

ログライブラリについて

以前にも少し書いたログ設計に関する記事。 ログの設計指針について 上記でログの設計について書きましたが、今回はログのライブラリに関して欲しいと思う機能を。 Contents1 レベル分け2 チャネルわ …

アーカイブ