PHP & Laravel Gold Tech Log

PHP & Laravel を中心にしたWeb関連開発技術の紹介

PHP require_once を使わず spl_autoload_register でオートロード

   

はじめに

毎回require_onceを使わずに、一括して自動でクラスファイルを読み込む方法です。spl_autoload_registerを使います。

クラスファイルの自動読み込み spl_autoload_register

Autoload.php

class AutoLoad
{
    protected $dirs;

    // クラスの登録
    public function register()
    {
        // オートローダクラスの登録
        spl_autoload_register(array($this, 'loadClass'));
    }

    // オートロードの対象となるディレクトリの登録
    public function registerDir($dir)
    {
        $this->dirs[] = $dir;
    }

    // クラスファイルの読み込みを行う
    public function loadClass($class)
    {
        foreach ($this->dirs as $dir) {
            $file = $dir . '/' . $class . '.php';
            if(is_readable($file)) {
                require $file;

                return;
            }
        }
    }
}

クラスファイルの読み込み指定

どのディレクトリからクラスファイルを読み込むのかを指定する

bootstrap.php

<?php

require 'AutoLoad.php';

$autoload= new AutoLoad();

$autoload->registerDir(dirname(__FILE__).'/modules');
$autoload->registerDir(dirname(__FILE__).'/models');

$loader->register();

http://php.net/manual/ja/function.spl-autoload-register.php

 - PHP, フレームワーク