machaon / utils
Utility functions for Bitrix-projects
Requires
- php: >=5.3.0
- monolog/monolog: ^1.22
- symfony/var-dumper: ^3.2
- zendframework/zend-config: ^2.6
Requires (Dev)
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2021-04-03 19:29:41 UTC
README
Набор функций-утилит для упрощения работы с битрикс-проектами
Установка
composer require machaon/utils
Как пользоваться
Базовый случай
# local/php_interface/init.php
require_once($_SERVER['DOCUMENT_ROOT'] . '/local/vendor/autoload.php');
# any-script.php
use Machaon\Utils as Machaon;
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$asset = Machaon\asset([
SITE_TEMPLATE_PATH . '/js/script.js',
SITE_TEMPLATE_PATH . '/css/style.css',
'<meta name="cms" content="bitrix">'
]);
if (SOMETHING) {
$asset->addJs(SITE_TEMPLATE_PATH . '/js/something.js');
}
Если не хочется работать через неймспейсы, автоматически подключается файл с прокси-функциями,
которые обернуты в function_exists()
.
# any-script.php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
// работаем с функцией напрямую
$asset = asset([
SITE_TEMPLATE_PATH . '/js/script.js',
SITE_TEMPLATE_PATH . '/css/style.css',
'<meta name="cms" content="bitrix">'
]);
Что в коробке
Machaon\Utils\config()
Открывает ini-файл с конфигурацией и возвращает объект для удобного управления ей.
Помимо .ini
поддерживает .xml
и .php
конфиги.
В работе используется пакет zendframework/zend-config
. Подробный док: https://zendframework.github.io/zend-config/
Пример использования:
# any-script.php
$config = config($_SERVER['DOCUMENT_ROOT'] . '/config/main.ini');
echo $config['iblock']['main_catalog'];
echo $config->iblock->get('main_catalog'); // то же самое
echo $config->iblock->get('main_catalog', '11'); // задаем значение по-умолчанию
Файл конфигурации должен быть валидным ini-файлом. Например, таким:
# main.ini
[iblock]
news = 1
main_catalog = 11
Machaon\Utils\asset()
Обертка над Bitrix\Main\Page\Asset. Добавляет в head
скрипты, стили и произвольные строки
и возвращает экземпляр Bitrix\Main\Page\Asset. Подробный док: https://dev.1c-bitrix.ru/api_d7/bitrix/main/page/asset/
Пример использования:
# any-script.php
// добавляем пачку скриптов и метатегов
$asset = asset([
SITE_TEMPLATE_PATH . '/js/script.js',
SITE_TEMPLATE_PATH . '/css/style.css',
'<meta name="cms" content="bitrix">'
]);
// используем полученный инстанс в дальнейшем для добавления скриптов по условию
if (SOMETHING) {
$asset->addJs(/* ... */);
}
Функция умеет выделять из путей js и css файлы по расширению, а нераспознаные строки добавляет методом addString
,
это удобно для мета-тегов.
Machaon\Utils\logger()
Быстрый способ получить готовый к использованию объект Monolog\Logger
- популярной библиотеки для логирования.
Первый параметр задает название канала, чтобы можно было различать разные логгеры, пишущие в один файл. Необязательный. Вторым параметром можно задать абсолютный путь к лог-файлу. Если оставить его пустым, то путь к лог-файлу будет браться из битрикс-константы LOG_FILENAME. Если константа не определена, функция бросит исключение.
Пример использования:
# any-script.php
$logger = logger();
$logger->info('Logger instance inited');
$logger->debug('Config instance inited', ['foo' => 'bar', 'bar' => 'baz']);
Лог-файл в таком случае может выглядеть примерно так:
# main.log
[2016-12-05 14:36:35] logger().INFO: Logger instance inited [] []
[2016-12-05 14:36:35] logger().DEBUG: Config instance inited {"foo":"bar","bar":"baz"} []
Логгеров может быть несколько:
# any-script.php
$securityLogger = logger('security', $_SERVER['DOCUMENT_ROOT'] . '/logs/security.log');
$debugLogger = logger('debug', $_SERVER['DOCUMENT_ROOT'] . '/logs/debug.log');
Важно понимать, что вместо функции можно пользоваться коробочными возможностями библиотеки Monolog. Это будет менее компактно, но даст больше возможностей:
# any-script.php
$logger = new \Monolog\Logger('security');
$handler = new \Monolog\Handler\StreamHandler(LOG_FILENAME, \Monolog\Logger::DEBUG);
$logger->pushHandler($handler);
$logger->info('Security logger inited');
Полная документация Monolog: https://github.com/Seldaek/monolog
Machaon\Utils\starts_with($haystack, $needle)
Функция возвращает true, если строка $haystack начинается со строки $needle. Позаимствовано из исходников Laravel.
Пример использования:
# any-script.php
if (starts_with('HelloWorld', 'Hello')) {
echo 'true';
}
Machaon\Utils\ends_with($haystack, $needle)
Функция возвращает true, если строка $haystack заканчивается строкой $needle. Позаимствовано из исходников Laravel.
Пример использования:
# any-script.php
if (ends_with('style.css', '.css')) {
echo 'this is css-file';
}
Machaon\Utils\d()
Функция выводит удобный дамп переданных на вход переменных с использованием компонента http://symfony.com/doc/current/components/var_dumper.html. На вход можно подать неограниченное количество переменных.
Machaon\Utils\dd()
Dump & Die. Работает аналогично d()
, но после вызова прекращает выполнение скрипта.
Machaon\Utils\da()
Dump if Admin. Работает только при подключенном bitrix-прологе, если текущий пользователь является администратором.
Machaon\Utils\dda()
Dump & Die if Admin. Работает аналогично da()
, но после вызова прекращает выполнение скрипта.