Инструменты пользователя

Инструменты сайта


fajl_inicializacii_prilozhenija

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

fajl_inicializacii_prilozhenija [2020/06/13 13:45] (текущий)
Строка 1: Строка 1:
 +====== Инициализации приложения ======
 +  * ООП [[Классы и объекты]] PHP
 +
 +**Файл инициализации** приложения, написанного в данном случае с использованием языка [[PHP]], осуществляет сбор данных, загружает файлы и организует информацию для использования в приложении. Например, файл инициализации может выполнять такие функции:
 +  * загрузка и определение всех необходимых констант
 +  * создание объекта подключения к базе данных
 +  * настройка функции автозагрузки для классов
 +
 +====== Функции автозагрузки ======
 +**Функции автозагрузки для классов**.
 +  * [[http://www.php.net/manual/ru/language.oop5.autoload.php|Автоматическая загрузка классов]]: autoload, spl_autoload_register
 +  * [[http://habrahabr.ru/post/136761/|Автозагрузка классов в PHP с использованием SPL]]
 +====== __autoload ======
 +  * **Пример 1**. Использование функции [[http://www.php.net/manual/ru/function.autoload.php|__autoload]]<file>
 +<?php
 +// Загрузка классов по требованию
 +function __autoload($class) {
 +// Подчеркивание в имени класса заменить на слеш
 +    $class = preg_replace('/^class_/', 'class/', $class);
 +    $filename = "../../core/" . $class . ".php";
 +
 +    if (file_exists($filename)) {
 +        include_once $filename;
 +    }
 +}
 +?>
 +</file>
 +
 +<note important>Рекомендуется использовать функцию spl_autoload_register() вместо устаревшей autoload().</note>
 +
 +
 +
 +  * **Пример 2**. Файл с описанием класса (A.class.php) и файл инициализации находятся в одной директории.<file>
 +<?php
 +class A {
 +    function __construct() {
 +        echo "<br>Класс ".__CLASS__." найден.";
 +    }
 +}
 +?>
 +
 +<?php
 +
 +function __autoload($className) {
 +    echo "Ищем класс $className";
 +    include "$className.class.php";
 +}
 +
 +$a1 = new A();
 +?>
 +</file>
 +====== spl_autoload_register ======
 +[[PHP]] позволяет задать обработчик (функцию или метод класса) который будет вызываться всякий раз при обращении к классу, который еще не определен. Аргументом функции-обработчика является имя вызываемого класса. Обработчик определяетс с помощью функции spl_autoload_register(). Если в качестве обработчика выступает функция, то аргументом spl_autoload_register() будет являться строка с именем функции (как в примере ниже).
 +  * **Пример**. Использование функции [[http://www.php.net/manual/ru/function.spl-autoload-register.php|spl_autoload_register]]<file>
 +<?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();
 +</file>Имя класса Controller_Admin будет преобразован в имя файла controller/admin.php и admin.php будет искаться сначала в текущей директории, потом в путях содержащихся в опции include_path.
 +
  

fajl_inicializacii_prilozhenija.txt · Последнее изменение: 2020/06/13 13:45 (внешнее изменение)