Комментарии

Включение файлов и их типы
( 0 Голосов )

В такой крупной кодовой базе, как Joomla, исходный код приходится распределять по многим файлам. А для этого нужно разбираться в различных типах файлов РНР, знать, как они включаются в работающую программу и что при этом происходит. Практически все файлы в Joomla разделяются на три категории.

  • Объявление класса.
  • Объявление функции.
  • Простой сценарий.

Файлы объявления классов

В ООП для каждого класса, как правило, выделяется отдельный файл. Подавляющее большинство файлов в системе управления информационным наполнением (CMS) вебсайтов и на платформе Joomla организованы именно таким способом. В каждом из них объявляется отдельный класс. Ниже приведена структура объявления класса.

class <имя класса>
{ // начало кодового блока класса
<поля класса, если таковые имеются>
<методы класса, если таковые имеются> } // конец кодового блока класса

Как правило, в начале каждого файла, где объявляется класс, присутствует одна из следующих строк кода:

defined('JPATH_PLATFORM') or die; 
// используется в файлах платформы defined('_JEXEC') or die;
// используется в файлах системы CMS

В этих строках кода гарантируется, что данный файл выполняется в среде Joomla. Зачастую после такой строки кода следует один или более оператор import для включения файлов классов, требующихся для данного класса. Когда файлы объявления классов включаются с помощью оператора include, require, j import или функции JLoader: : register (), соответствующие классы и их методы вводятся в рабочую область памяти, но программный код не выполняется. Единственное изменение состоит в том, что класс вместе со своими методами и полями становится доступным для применения в той программе, в которую он включен.

Файлы объявления функций

В некоторых файлах, используемых в Joomla, вместо классов объявляются функции. К их числу относится файл templates /system/html /modules, php, в котором предоставляются основные функции для стилевой рамки модуля, а также файл components/ com_content/router .php,вкoтopoмпpeдocтaвляютcяфyнкцииContentBuildRoute () и ContentParseRoute (). Эти файлы могут быть включены только по командам include или require, а также их разновидностям include_once и require_once. А поскольку в них не объявляются классы, то они и не могут быть включены с помощью методов jimport() или JLoader::register ().

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

Простые сценарии

Файлы простых сценариев содержат последовательный ряд операторов языка РНР. К их числу относятся файлы index.php для пользовательской и административной частей веб-сайта на Joomla, а также файлы шаблонов и компоновки. Как и файлы объявления функций, файлы простых сценариев не содержат никаких объявлений классов, а следовательно, они могут быть включены по команде include или require, а также их разновидностям include_once и require_once. Но в отличие от других типов файлов, когда простые сценарии включаются в программу, их операторы выполняются немедленно. А любые переменные, находящиеся в области действия той части программы, в которую включается простой сценарий, по-прежнему остаются в области действия сценария.

Смешанные файлы

В одном файле можно также сочетать операторы простого сценария с объявлениями функции или класса. В этом случае объявленный класс или функция вводится в рабочую область памяти, а операторы, находящиеся за пределами кодовых блоков, выполняются немедленно. Такие файлы должны быть включены по команде include или require, а также их разновидностям include_once и require_once.

Включение файлов

Для включения других файлов в прикладную программу Joomla, выполняющуюся в данный момент, служат следующие команды и функции.

  1. Команда include: включает файл любого типа, но вызывает ошибку, если во включаемом файле объявляется класс или функция, которые уже объявлены в другом месте. Если же найти включаемый файл не удастся, это не приведет к ошибке.
  2. Команда include_once: действует так же, как и команда include, за исключением того, что в ней проверяется, был ли данный файл включен раньше. На некоторых серверах эта команда может выполняться медленнее, поэтому для включения файлов объявления классов лучше пользоваться командой j import или JLoader::register().
  3. Команда require: действует так же, как и команда include, за исключением того, что она приводит к ошибке, если файл не удается найти.
  4. Команда require_once: действует так же, как и команда require, за исключением того, что она не пытается включить файл, который был включен раньше. И эта команда может выполняться медленнее на некоторых серверах, поэтому лучше пользоваться командой jimport () или JLoader:: register (). 

Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости