Автозагрузчик PHP — это всего лишь механизм для включения файла при создании класса.
Если вы поместите все свои классы в 1 файл, вам не нужен автозагрузчик. Конечно, при программировании объектно-ориентированного программирования вы даете каждому классу свой собственный файл, и здесь в дело вступает автозагрузчик.
Некоторые примеры:
class AutoLoader
{
public function __construct()
{
spl_autoload_register( array( $this, 'ClassLoader' ));
}
public function ClassLoader( $class )
{
if( class_exists( $class, false ))
return true;
if( is_readable( 'path_to_my_classes/' . $class . '.php' ))
include_once 'path_to_my_classes/' . $class . '.php'
}
}
$autoloader = new AutoLoader();
Здесь происходит следующее: когда создается класс автозагрузчика, метод класса Classloader регистрируется как автозагрузчик.
Когда создается новый класс, метод Classloader сначала проверяет, загружен ли файл для класса. Если нет, классу предшествует путь и расширяется расширением. Если файл доступен для чтения, он включается.
Конечно, вы можете сделать это очень изощренным. Давайте рассмотрим пример с пространствами имен и картографом. Предположим, мы находимся в классе автозагрузчика:
private $mapper array( 'Foo' => 'path_to_foo_files/', 'Bar' => 'path_to_bar_files/');
public function ClassLoader( $class )
{
if( class_exists( $class, false ))
return true;
// break into single namespace and class name
$classparts = explode( '\\', $class );
$path = $this->mapper[$classparts[0]];
if( is_readable( $path . $classparts[1] . '.php' ))
include_once $path . $classparts[1] . '.php'
}
Здесь имя класса разделено на часть пространства имен и части имени класса. Часть пространства имен просматривается в массиве сопоставления, и этот путь затем используется как путь включения для файла php.
Это всего лишь примеры, демонстрирующие, что можно сделать с помощью автозагрузчика. Для производства необходимо выполнить еще кое-что, например, проверку ошибок.
person
JvdBerg
schedule
16.09.2012