machaon/utils

该包已被废弃,不再维护。未建议替代包。

Bitrix-项目工具函数

1.1.0 2017-01-19 14:50 UTC

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() 类似,但在调用后停止脚本执行。