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

emptyの扱いに関して

PHPで空白や存在確認として便利なemptyですが、乱用すると意図しない動きをすることがあるケースが多々あります。 Contents1 emptyの挙動に関して2 数値の03 検索などの全判定と値のな …

no image

inotifyによる検知

以前、pynotifyというpythonの検知プログラムを書きましたが、元々はinotifyというLinux上のパッケージのライブラリが元になっています。 以前調べたリンク 監視検知処理に関して 実務 …

no image

Laravelでのmiddlewareの実行順番

Laravelでのmiddlewareをいじって認証直後の処理を作りたいときなど。 例えばログイン後、ユーザーidに応じた共通処理などをかませたいときです。 この場合、当然ログインの後に処理を実行しな …

no image

php-fpmに関して

今回はphp-fpmに関して。会社のサーバー(このブログが載っているサーバー)がこれ使ってて、メモリをやたら消費しており、設定を見直す必要があったので、リサーチ。 Contents1 php-fpmと …

no image

phpenvで入れたphpの起動スクリプトに関して

以前、CentOS7.7にphp5.3を入れるという案件がありましたが、yumなどでは入らないため、phpenvで入れました。 phpenv5.3+php-fpm が、起動スクリプトを配置していないこ …