machaon / utils
Bitrix-项目工具函数
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
为简化Bitrix-项目工作而设计的函数集合
安装
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/](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/](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
对象,这是一个流行的日志记录库。
第一个参数指定通道名称,以便区分写入同一文件的不同日志记录器。可选。第二个参数可以指定日志文件的绝对路径。如果留空,则日志文件路径将取自Bitrix的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');
重要的是要理解,您可以使用库的内置功能而不是函数。这会占用更多空间,但会提供更多功能。
# 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](https://github.com/Seldaek/monolog)
Machaon\Utils\starts_with($haystack, $needle)
如果字符串 $haystack 以字符串 $needle 开头,则该函数返回 true。从Laravel源代码中借用。
使用示例
# any-script.php
if (starts_with('HelloWorld', 'Hello')) {
echo 'true';
}
Machaon\Utils\ends_with($haystack, $needle)
如果字符串 $haystack 以字符串 $needle 结尾,则该函数返回 true。从Laravel源代码中借用。
使用示例
# any-script.php
if (ends_with('style.css', '.css')) {
echo 'this is css-file';
}
Machaon\Utils\d()
使用 https://symfony.ac.cn/doc/current/components/var_dumper.html 组件以方便的格式输出传入的变量。可以传入任意数量的变量。
Machaon\Utils\dd()
Dump & Die。与 d()
类似,但在调用后停止脚本执行。
Machaon\Utils\da()
Dump if Admin。仅当连接到Bitrix-prolog且当前用户是管理员时才工作。
Machaon\Utils\dda()
Dump & Die if Admin。与 da()
类似,但在调用后停止脚本执行。