Help us understand the problem. What is going on with this article?

つべこべ言わずComposerでシンプルにautoloaderを使用したいとき

概要

ってことでシンプルに行きます。

今の時代メモリの節約や実行速度なんかより、見通しがよくて可読性、保守性の高いコードのほうが好まれるので、できるだけコード全体もシンプルにあるほうがいいと思います。

クラスファイルのインクルード

HogeController.php
<?php

require_once '../application/models/Model_A.php';  //3つともクラスファイル
require_once '../application/models/Model_B.php';
require_once '../application/models/Model_C.php';

class HogeController{


}

個人的にはあまりこういう書き方はしたくないです。
なのでcomposer.jsonに以下のように記述します。

composer.json
"autoload": {
    "classmap": ["./application/models/Model_A.php",
                 "./application/models/Model_B.php",
                 "./application/models/Model_C.php",
    ]
}

そして、ターミナルでそのjsonファイルまで移動して以下を実行。

composer dumpautoload

これでautoloadのみが更新されます。

更新に成功すればcomposerのautoload_classmap.phpの戻り値の配列の中にそれに対応した行が追加されてるはずです。

例: 'Model_A' => $baseDir . '/application/models/Model_A.php',

それ以外のファイルのインクルード

クラスファイルじゃなくて、単に関数定義とかしてるだけのファイルをオートロードしたいときはこんな感じ。

composer.json
"autoload": {
    "files": ["./application/funcs/functions_A.php"]
}

ってことで以上です。

ltg_lambda
英語についてしか語れません。 https://twitter.com/jt_taku
https://eigo-shutoku.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away