PHP

Автозагрузка классов на php

При написании сложных систем на php, количество подключаемых файлов возрастает неимоверно. Подключать в лоб, все необходимые файлы, быстро надоедает. Да и такой способ сказывается на быстродействии скрипта. Ведь не для всех операций нужны все скрипты.

На помощь приходит встроенный в php механизм автозагрузки классов при их вызове.

Раньше мы делали так:

<?php
include 'db.php';
$db = new db();

Если класс не будет загружен то мы получим фатальную ошибку. Пойдем другим путем. Положим, что все наши классы лежать в папке classes/ и названия классов соответствуют названиям файлов с префиксом class.

Регистрируем автозагрузчик функцией spl_autoload_register

<?php
spl_autoload_register(function ($class_name) {
  $file = 'classes/class..'.strtolower($class_name) . '.php';
  if ( file_exists($file) )
    require_once ($file);
});

теперь вы сразу же можете использовать new db(), если файл class.db.php с соответствующим классом лежит в папке classes

$db = new db(); // подклчится class.db.php
$tpl = new tpl();// подклчится class.tpl.php
$router = new router();// подклчится class.router.php

При использовании совместно с техникой синглетонов, вы получаете отличный инструмент автоматизации процесса разработки.

Отличие spl_autoload_register от обычной spl_autoload или просто объявления функции __autoload в том, что Вы можете объявлять несколько загрузчиков, каждый из которых может искать файлы в разных папках. К примеру модули в папке modules/ и т.п.
Теги:
шаблоны, автозагрузка, spl_autoload_register, __autoload, автоматизация разработки, шаблоны
Добавлено: 20 Апреля 2018 19:34:29 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...