Powered by Cloudflare

PHPで別ファイルのクラスをrequireせずに使う方法

Code

こんばんは。
PHP別ファイルにあるクラスを読み込むとき、そのファイルをrequireするかと思います。数が少ないうちはいいですが、多くなってくるとファイルの冒頭がrequireだらけになってしまいます。オブジェクト指向についてやっていてクラスを読み込むのが大変だ、と思っていたら見つけてしまいました。

spl_autoload_register関数です。
PHP.net spl_autoload_register関数

使い方は簡単。
newと宣言する前に実行すればよいだけ。下に例を示します。


autoload.php
<?php
namespace AutoLoader;

class ClassLoader
{
    public static function loadClass($class)
    {
            $file_name = "/class/{$class}.php";     //クラスが置いてあるディレクトリを指定
                require $file_name;
                return true;
    }
}

spl_autoload_register(__NAMESPACE__ . '\ClassLoader::loadClass');

index.php
<?php
require "autoload.php";
$sample_class = new Sample;
$sample_class->test();

class/Sample.php
<?php
class Sample
{
public function test(){
echo "Success!";
}
}

こんな感じで使えます。注意しなければいけない点があるとすれば、ファイル内にクラスは一つまで、ファイル名とクラス名を同じにするということくらいでしょう。

時間があれば、類似関数についても書きたいと思います