レジストリパターンでは、たとえば次のようなオブジェクトを作成するだけです。
public function createAndStoreObject( $object, $key )
{
require_once( $object . '.class.php' );
$this->objects[ $key ] = new $object( $this );
}
そして、そのキーを介してそれにアクセスします。
オートローダーでは、次のようなことを行います。
<?php
class autoloader {
public static function moduleautoloader($class) {
$path = $_SERVER['DOCUMENT_ROOT'] . "/modules/{$class}.php";
if (is_readable($path)) {
require $path;
}
}
public static function daoautoloader($class) {
$path = $_SERVER['DOCUMENT_ROOT'] . "/dataobjects/{$class}.php";
if (is_readable($path))
require $path;
}
public static function includesautoloader($class) {
$path = $_SERVER['DOCUMENT_ROOT'] . "/includes/{$class}.php";
if (is_readable($path))
require $path;
}
}
spl_autoload_register('autoloader::includesautoloader');
spl_autoload_register('autoloader::daoautoloader');
spl_autoload_register('autoloader::moduleautoloader');
?>
そして、それは以下のように使用されます:
オブジェクトを作成する場合は、includes、modules、またはdataobjectsフォルダーを通過してクラスを検索し、存在する場合はオブジェクトを作成する必要があります。
巨大なアプリケーションの場合、レジストリアプローチを実行する必要がありますか、それともここでオートローダーを使用する利点がありますか?