Этот хук появился в 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
.
Хук обязательно пригодится при разработке приложения с неймспейсами и классами.
См. также Автоматическая загрузка классов