Инициализации приложения

Файл инициализации приложения, написанного в данном случае с использованием языка PHP, осуществляет сбор данных, загружает файлы и организует информацию для использования в приложении. Например, файл инициализации может выполнять такие функции:

  • загрузка и определение всех необходимых констант
  • создание объекта подключения к базе данных
  • настройка функции автозагрузки для классов

Функции автозагрузки

Функции автозагрузки для классов.

__autoload

  • Пример 1. Использование функции __autoload
    <?php
    // Загрузка классов по требованию
    function __autoload($class) {
    // Подчеркивание в имени класса заменить на слеш
        $class = preg_replace('/^class_/', 'class/', $class);
        $filename = "../../core/" . $class . ".php";
    
        if (file_exists($filename)) {
            include_once $filename;
        }
    }
    ?>
Рекомендуется использовать функцию spl_autoload_register() вместо устаревшей autoload().
  • Пример 2. Файл с описанием класса (A.class.php) и файл инициализации находятся в одной директории.
    <?php
    class A {
        function __construct() {
            echo "<br>Класс ".__CLASS__." найден.";
        }
    }
    ?>
    
    <?php
    
    function __autoload($className) {
        echo "Ищем класс $className";
        include "$className.class.php";
    }
    
    $a1 = new A();
    ?>

spl_autoload_register

PHP позволяет задать обработчик (функцию или метод класса) который будет вызываться всякий раз при обращении к классу, который еще не определен. Аргументом функции-обработчика является имя вызываемого класса. Обработчик определяетс с помощью функции spl_autoload_register(). Если в качестве обработчика выступает функция, то аргументом spl_autoload_register() будет являться строка с именем функции (как в примере ниже).

  • Пример. Использование функции spl_autoload_register
    <?php
    
    /**
     * Автозагрузка классов
     * @param type $className - имя класса
     */
    function myautoload($className) {
    //    Подчеркивание в имени класса заменить на разделитель директорий
        $fileName = strtolower(str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php');
        include_once $fileName;
    }
    
    spl_autoload_register('myautoload'); // регистрируем функцию-обработчик
    
    $tt = new Controller_Admin();

    Имя класса Controller_Admin будет преобразован в имя файла controller/admin.php и admin.php будет искаться сначала в текущей директории, потом в путях содержащихся в опции include_path.

PQ VPS сервера в 28+ странах.