PHP 의 클래스들은 개별적인 .php 파일들로 존재합니다.
클래스를 사용할 때마다 include 나 require 또는 중복 로딩을 방지하기 위해 include_once, require_once 등을 사용하는 것은 매우 번거로운 일입니다.
PHP 5 부터는 클래스 오토로딩 기능이 추가되어서 .php 파일에 __autoload 라는 함수를 작성하면 사용하려는 클래스나 인터페이스가 없을 경우 __autoload 함수를 자동으로 호출합니다.
<?php
function __autoload($class_name) {
include $class_name . '.php';
}
$obj = new MyClass1();
$obj2 = new MyClass2();
PHP
하지만 __autoload 는 클래스마다 구현해야 하는 불편함이 있어서 사용이 권장되고 있지 않습니다.
spl_autoload_register 는 이 문제를 해결하기 위한 함수로 여러 개의 오토로더를 등록할 수 있습니다.
<?php
spl_autoload_register('MyClassLoader::LibraryLoader');
spl_autoload_register('MyClassLoader::DatabaseLoader');
class MyClassLoader
{
public static function LibraryLoader($class)
{
include 'libraries/' . $class. '.php';
}
public static function DatabaseLoader ($class)
{
include 'databases/' . $class. '.php';
}
}
CODE
패키지 매니저인 컴포저는 spl_autoload_register 를 활용하여 유연하게 오토로딩을 지원하고 있습니다.
컴포저에 대해서는 다음 장에서 자세히 살펴보도록 하겠습니다.