Код основного файла компонента

Защита от несанкционированного доступа

Создание констант

Включение и выполнение файла контроллера

Создание экземпляра класса контроллера

Команда выполнить задачу, указанную в запросе

Установка переадресации 

 

Как уже было сказано во второй главе, при поступлении запроса система обращается к основному файлу компонента, который всегда имеет тоже имя, что и сам компонент и находится в главной папке  com_my_component , которые в свою очередь находится после установки в папке  components  сайта.

Задача данного файла довольно проста: создание класса компонента и передача управления контроллеру. Так же иногда в этом файле могут создаваться общие для компонента константы или функции. Рассмотрим код файла.

  1     <?php
  2     /**
  3     *   @Autor WDS
  4     *   @subpackage Components
  5     *   components/com_feedback_form
  6     *   @license GNU/GPL
  7     *   @copyright Copyright (C) 2020
  8     */

  9     // Защита от прямого обращения к скрипту
10    defined( '_JEXEC' ) or die( 'Restricted access' );

11    // Создание константы
12    if (!defined('FEED_FORM_COM_P')) {
13           define('FEED_FORM_COM_P', __DIR__);
14    }

15    // Подключение и выполнение файла контроллера
16    require_once( JPATH_COMPONENT . '/controller.php' );

17    // Создание экземпляра класса контроллера
18    $controller = new FeedbackFormController( );   

19    // Выполнение задачи запроса
20    $controller->execute( JRequest::getVar( 'task' ) );

21    // Переадресация
22    $controller->redirect();

23    ?>

Код основного файла компонента

Строка 1 содержит открывающий тег <?php>.

В строках 2-8 содержится общая информация о файле: имя автора, к чему принадлежит (компонент, модуль и т.п.), папка установки, лицензия, копирайт и так далее. Сюда так же можно дописать всё, что угодно, любую важную для вас информацию - система игнорирует всё, что находится между  /** и  */ (но в любом случае каждая новая строка должна начинаться со звёздочки).

Обратите внимание: если вам необходимо прописать в коде короткую информацию в одной строке, как например, в строках 9, 11, используйте //.

Защита от несанкционированного доступа

Строки 9-10 содержат очень важный элемент кода - защиту от несанкционированного доступа.

Работает это так.

При поступлении запроса от пользователя основной "входящий" файл сайта index.php, расположенный в главной папке,  создаёт константу _JEXEC. Любой файл сайта в самом начале содержит выражение

defined( '_JEXEC' ) or die( 'Restricted access' );

задача которого проверить наличие данной константы при помощи функции defined. Если константа существует, т.е. запрос пользователя поступил как это и положено через основной файл index.php, нижеследующий код будет выполнен. Если же запрос от пользователя поступил непосредственно на данный файл (например, пользователь ввёл в поисковую строку https://my_site.ru/components/com_feedback_form.php) при проверке наличия константы _JEXEC функция defined обнаружит, что указанной константы не существует, и запретит серверу выполнять дальнейший код, в результате чего пользователь получит пустой экран.

 При составлении любого кода обязательно используйте данное выражение в самом начале файла!

Создание констант

В строках 11-14 создаётся константа, используемая во всём компоненте. Это необязательный пункт для этого файла, но если вы решите создать константы, то здесь это можно сделать очень удобно.  

Выражение, прописанное в строках 11-14, можно прочитать как "если именованная константа FEED_FORM_COM_P не существует (опять применяется функция defined), то её необходимо создать (функция define) со значением __DIR__

 __DIR__ - это "магическая", предопределённая константа, возвращающая каталог файла.  Если используется внутри include, возвращается каталог включенного файла.

Включение и выполнение файла контроллера

Строка 16 включает и выполняет файл контроллера, который создаёт класс контроллера. Это делается при помощи функции require_once.

 Функция require_once аналогична функции include, в её задачу так же входит включить и выполнить указанный файл, но с той разницей, что при обнаружении ошибки выполнение файла будет остановлено, а в случае использования include - продолжено (с выдачей предупреждения). Приставка _once означает, что указанный файл перед запуском будет проверен, включался ли он ранее. Если включался, то повторного включения не произойдёт.

Обратите внимание на указанный путь к файлу JPATH_COMPONENT.DS.'controller.php', где

  • JPATH_COMPONENT - это константа, указывающая путь к данному компоненту;
  • DS - указание системе автоматически определить, какой тип косой черты должен быть применён (/ или \, т.е. слеш или бэкслеш);
  • 'controller.php' - название файла, причём оно берётся в одинарные кавычки.

Создание экземпляра класса контроллера

Строка 18 создаёт экземпляр класса контроллера в виде переменной $controller.

Выполнение задачи, указанной в запросе

Строка 20 указывает системе, что необходимо выполнить задачу (execute), указанную в запросе; при этом функция  JRequest::getVar( 'task' ) находит в URL что именно нужно сделать - это прописано в переменной task. В дальнейшем это будет рассмотрено более подробно.

Установка переадресации

Строка 22 устанавливает переадресацию, т.е. передаёт управление файлу controller.php.

 Пропишите указанный код в основном файле компонента feedback_form.php (откройте при помощи редактора Notepad++, внесите код и сохраните) и переходите к следующему файлу.

 

 

 

Добавлять комментарии и ответы могут только пользователи, прошедшие регистрацию!
Зарегистрируйтесь и напишите своё мнение или ответ!