Функция 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";
}
}
Параметры функции:
$name(string) – Имя расширения или API (например, название модуля, плагина, темы или компонента).$type(string) – Тип расширения, который может быть одним из следующих значений:'core'для файлов ядра системы.'plug'для плагинов.'theme'для тем.'admin'для административной части.- (По умолчанию используется
'core').
$part(string) – Часть расширения, например,'functions','setup', и так далее, указывающая на конкретный файл или его часть, который нужно подключить.
Логика работы функции:
-
Тип
'core'(Ядро системы):- Если тип расширения —
'core', то функция возвращает путь к файлу внутри системной директории, используя переменную конфигурацииCot::$cfg['system_dir']. Путь формируется как:Cot::$cfg['system_dir'] . "/$name.php";
Здесь$name— это имя API или расширения. Например, если$nameбудет равно'user', то путь будет/system/user.php.
- Если тип расширения —
-
Тип
'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.
- Если тип расширения —
-
Тип
'theme'(Тема):- Если тип расширения —
'theme', то возвращается путь к файлу внутри директории темы (Cot::$cfg['themes_dir']):Cot::$cfg['themes_dir'] . "/$name/$name.$part.php";
Пример: если$nameравно'default'и$partравно'header', то путь будет:/themes/default/default.header.php.
- Если тип расширения —
-
Тип
'admin'(Административная часть):- Если тип расширения —
'admin', то функция вернет путь, где будет указан файл в директории ядра, но внутри папкиadmin. Путь будет формироваться следующим образом:Cot::$cfg['system_dir'] . "/$name/$name.$part.php";
Например, для$name = 'admin'и$part = 'functions', путь будет:/system/admin/admin.functions.php.
- Если тип расширения —
-
Тип по умолчанию (Модуль):
- Если тип расширения не совпадает с перечисленными, то функция предполагает, что это модуль, и возвращает путь к файлу внутри директории модулей (
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() позволяет динамически строить пути к файлам расширений в зависимости от их типа и части, обеспечивая гибкость подключения различных файлов в систему. Это важная часть для правильного функционирования системы, так как она автоматически определяет, какой файл нужно подключить в зависимости от типа расширения и требуемой части (например, функции или настройки).
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 03.08.2026 13:51
- Страница размещена: 22.01.2025 12:27
- Последнее обновление: 22.01.2025 13:00