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

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


fajl_inicializacii_prilozhenija

Различия

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

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

fajl_inicializacii_prilozhenija [2012/10/11 19:03] (текущий)
Строка 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 · Последние изменения: 2012/10/11 19:03 (внешнее изменение)