Функция cot_incfile в Cotonti

Разбор функции cot_incfile

Эта функция предназначена для генерации пути к файлу, который необходимо подключить в систему. Она принимает несколько параметров, чтобы определить, какой файл из какого места нужно подключить. Давайте разберемся, как работает каждый элемент этой функции.


/**
 * Returns path to include file
 *
 * @param string $name Extension or API name
 * @param string $type Extension type: 'module', 'plug', 'admin', 'theme' or 'core' for core API
 * @param string $part Name of the extension part
 * @return string File path
 */
function cot_incfile($name, $type = 'core', $part = 'functions')
{
	if ($type == 'core') {
		return Cot::$cfg['system_dir'] . "/$name.php";
	} elseif ($type == 'plug') {
		return Cot::$cfg['plugins_dir'] . "/$name/inc/$name.$part.php";
	} elseif ($type == 'theme') {
		return Cot::$cfg['themes_dir'] . "/$name/$name.$part.php";
	} elseif ($name == 'admin') {
		// Built-in extensions
		return Cot::$cfg['system_dir'] . "/$name/$name.$part.php";
	} else {
		return Cot::$cfg['modules_dir'] . "/$name/inc/$name.$part.php";
	}
}

 

Параметры функции:

  1. $name (string) – Имя расширения или API (например, название модуля, плагина, темы или компонента).
  2. $type (string) – Тип расширения, который может быть одним из следующих значений:
    • 'core' для файлов ядра системы.
    • 'plug' для плагинов.
    • 'theme' для тем.
    • 'admin' для административной части.
    • (По умолчанию используется 'core').
  3. $part (string) – Часть расширения, например, 'functions', 'setup', и так далее, указывающая на конкретный файл или его часть, который нужно подключить.

 

Логика работы функции:

  1. Тип 'core' (Ядро системы):

    • Если тип расширения — 'core', то функция возвращает путь к файлу внутри системной директории, используя переменную конфигурации Cot::$cfg['system_dir']. Путь формируется как:
      Cot::$cfg['system_dir'] . "/$name.php";
      Здесь $name — это имя API или расширения. Например, если $name будет равно 'user', то путь будет /system/user.php.
  2. Тип 'plug' (Плагин):

    • Если тип расширения — 'plug', то функция возвращает путь к файлу внутри директории плагинов (Cot::$cfg['plugins_dir']), используя структуру папок:
      Cot::$cfg['plugins_dir'] . "/$name/inc/$name.$part.php";
      Это означает, что для плагина файл будет находиться в папке inc внутри директории плагина. Например, если $name равно 'forum', а $part равно 'functions', путь будет следующим:
      /plugins/forum/inc/forum.functions.php.
  3. Тип 'theme' (Тема):

    • Если тип расширения — 'theme', то возвращается путь к файлу внутри директории темы (Cot::$cfg['themes_dir']):
      Cot::$cfg['themes_dir'] . "/$name/$name.$part.php";
      Пример: если $name равно 'default' и $part равно 'header', то путь будет:
      /themes/default/default.header.php.
  4. Тип 'admin' (Административная часть):

    • Если тип расширения — 'admin', то функция вернет путь, где будет указан файл в директории ядра, но внутри папки admin. Путь будет формироваться следующим образом:
      Cot::$cfg['system_dir'] . "/$name/$name.$part.php";
      Например, для $name = 'admin' и $part = 'functions', путь будет:
      /system/admin/admin.functions.php.
  5. Тип по умолчанию (Модуль):

    • Если тип расширения не совпадает с перечисленными, то функция предполагает, что это модуль, и возвращает путь к файлу внутри директории модулей (Cot::$cfg['modules_dir']). Путь будет таким:
      Cot::$cfg['modules_dir'] . "/$name/inc/$name.$part.php";
      Например, для $name = 'blog' и $part = 'setup', путь будет:
      /modules/blog/inc/blog.setup.php.

Пример работы функции:

Примеры записи:

require_once cot_incfile('page', 'module', 'resources');

require_once cot_incfile('forms');

require_once cot_incfile('extrafields');

include cot_incfile('forums', 'module', $m);

require cot_incfile('pfs', 'module', 'admin.allpfs');

require_once cot_incfile('market', 'module', 'admin.'.$p);

require_once cot_incfile('projects', 'module', 'offers');

require_once cot_incfile('attacher', 'plug', 'upload');

require_once cot_incfile('attacher', 'plug', 'download');

require_once cot_incfile('htmlmail', 'plug', 'emogrifier');

include cot_incfile('i18n', 'plug', 'structure');

include cot_incfile('i18n', 'plug', 'page');

 

в некоторых старых расширениях можно увидеть запись:

require_once cot_incfile('rcomm', 'plug', 'functions');

В данной функции cot_incfile, которая явлеятся штатной функцией движка котонти, явно указан параметр функции по-умолчанию

$part = 'functions'

Постает вопрос, - обязательно ли прописывать 'functions' в нашей функции $path = cot_incfile('rcomm', 'plug', 'functions'); ?

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

Параметр $part в функции cot_incfile имеет значение по умолчанию 'functions'.
Это означает, что если вы не передаете другое значение для этого параметра как в примерах выше, то по умолчанию будет использовано 'functions'.

Таким образом, вы можете вызвать функцию cot_incfile следующим образом, без явного указания параметра $part:

$path = cot_incfile('rcomm', 'plug');

В этом случае, так как параметр $part не был передан, будет использовано значение по умолчанию — 'functions'. То есть путь, возвращаемый функцией, будет таким же, как если бы вы явно указали:

$path = cot_incfile('rcomm', 'plug', 'functions');

Пример:

Без явного указания $part:

$path = cot_incfile('rcomm', 'plug');

Это эквивалентно:

$path = cot_incfile('rcomm', 'plug', 'functions');

Таким образом, вы можете опустить параметр $part, если хотите использовать его значение по умолчанию ('functions').

Это важно понимать при разработке своих расширений для php-фреймворка Cotonti.

Заключение:

Функция cot_incfile() позволяет динамически строить пути к файлам расширений в зависимости от их типа и части, обеспечивая гибкость подключения различных файлов в систему. Это важная часть для правильного функционирования системы, так как она автоматически определяет, какой файл нужно подключить в зависимости от типа расширения и требуемой части (например, функции или настройки).

 

4 минут чтения Administrator

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

Administrator

Оффлайн

Administrator

Последняя авторизация: 03.08.2026 13:51

  • Страница размещена: 22.01.2025 12:27
  • Последнее обновление: 22.01.2025 13:00