Хук integrate_autoload

Этот хук появился в SMF 2.1 и предназначен для автоматического подключения файлов с используемыми классами.

Расположение

index.php

    call_integration_hook('integrate_autoload', array(&$classMap));

В переменной $classMap содержится массив, где ключами являются пространства имён, а значениями — пути к файлам классов внутри директории /Sources.

Использование

Как подключить

Рассмотрим пример (Optimus):

<?php

namespace Bugo\Optimus;

class Integration
{
    // В этой функции подключаем используемые хуки
    public function hooks()
    {
        add_integration_function('integrate_autoload', __CLASS__ . '::autoload#', false, __FILE__);
    }

    // А здесь определяем используемое пространство имён для своих классов
    public function autoload(&$classMap)
    {
        $classMap['Bugo\\Optimus\\'] = 'Optimus/';
    }
}

Благодаря функции выше в коде приложения при вызове требуемой функции можно указать лишь название класса (например, Subs::function()), без полного пути к нему (\Bugo\Optimus\Subs::function()). SMF будет искать нужный файл в директории /Sources/Optimus.

Хук обязательно пригодится при разработке приложения с неймспейсами и классами.

См. также Автоматическая загрузка классов