LoginSignup
25
28

More than 5 years have passed since last update.

PHPのautoloadについて

Last updated at Posted at 2016-11-21

autoloadとは

ファイルを自動で読み込む仕組みのこと。

クラスを作成する場合、再利用する性質上1クラスを1ファイルで管理することになる。
しかし扱うファイル数が増えた時に、各スクリプトの先頭で一つ一つrequireしなければいけなくなる。

そこでファイルを自動で読み込む仕組みであるautoloadを使用する。

spl_autoload_register

通常autoloadも使用せずファイルの読み込みも行っていない場合、このタイミングでfatal errorになる。

<?php
$hoge = new Hoge();  //fatal error

spl_autoload_registerを使用してオートローダーを登録しておくと、PHPがエラーで止まる前に登録したメソッドが呼び出される。

spl_autoload_registerを使わない場合


<?php
require_once 'MyClass1.php';
require_once 'MyClass2.php';
require_once 'MyClass3.php';

$obj  = new MyClass1();
$obj2 = new MyClass2();
$obj2 = new MyClass3();

spl_autoload_registerを使う場合


<?php
spl_autoload_register(function ($class_name) {
    require_once $class_name . '.php';
});

$obj  = new MyClass1();
$obj2 = new MyClass2();
$obj3 = new MyClass3();

composerでautoloadを設定する

spl_autoload_registerを使用して自前で作成しなくても、composer-autoloadで実装が出来る。

composerをダウンロード

$ curl -s https://getcomposer.org/installer | php

conposer.jsonファイル

composer.jsonというファイルを作成し、autoloadの設定をしていく。

{
    "autoload": {
        "psr-4": {
            "Namespace\\": "DirName/"
        }
    }
}

psr-4という規約にのっとって作成し、namespace Namespaceと宣言されたクラスは、DirNameというディレクトリの中にあるということを設定している。

autoload.phpの作成

$ composer dump-autoload

これでvenderディレクトリにautoload.phpが作成される。
あとは作成されたautoload.phpをbootstrap.phpなどでrequireすればautoloadが使用できる。
(bootstrap.phpはアプリケーション全体の設定を作成する・読み込むのに使用されるファイルのこと。)

25
28
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
28