lastdragon-ru/lara-asp-formatter

为Laravel提供的出色包集合 - 格式化器。

6.4.2 2024-09-20 13:09 UTC

README

此包提供了一组可定制的Intl格式化器包装,以便在Laravel应用程序中使用。

需求

安装

composer require lastdragon-ru/lara-asp-formatter

使用

格式化器非常简单易用

<?php declare(strict_types = 1);

use LastDragon_ru\LaraASP\Dev\App\Example;
use LastDragon_ru\LaraASP\Formatter\Formatter;

$default = app()->make(Formatter::class); // For default app locale
$locale  = $default->forLocale('ru_RU');  // For ru_RU locale

Example::dump($default->integer(123.454321));
Example::dump($default->decimal(123.454321));
Example::dump($locale->decimal(123.454321));

$default->integer(123.454321)

"123"

$default->decimal(123.454321)

"123.45"

$locale->decimal(123.454321)

"123,45"

请查看源代码以查看可用方法,以及配置示例以查看可用设置 🤗

格式

一些方法如date()/datetime()/等有$format参数。该参数指定的是格式名称,而不是格式本身。因此,您可以使用名称,而无需担心真实的格式。这对于大型/增长的应用程序非常重要。要指定可用的名称和格式,应发布和自定义包的配置。

php artisan vendor:publish --provider=LastDragon_ru\\LaraASP\\Formatter\\Provider --tag=config
<?php declare(strict_types = 1);

use Illuminate\Support\Facades\Date;
use LastDragon_ru\LaraASP\Dev\App\Example;
use LastDragon_ru\LaraASP\Formatter\Formatter;
use LastDragon_ru\LaraASP\Formatter\Package;

Example::config(Package::Name, [
    'options' => [
        Formatter::Date => 'default',
    ],
    'all'     => [
        Formatter::Date => [
            'default' => 'd MMM yyyy',
            'custom'  => 'yyyy/MM/dd',
        ],
    ],
    'locales' => [
        'ru_RU' => [
            Formatter::Date => [
                'custom' => 'dd.MM.yyyy',
            ],
        ],
    ],
]);

$datetime = Date::make('2023-12-30T20:41:40.000018+04:00');
$default  = app()->make(Formatter::class);
$locale   = $default->forLocale('ru_RU');

Example::dump($default->date($datetime));
Example::dump($default->date($datetime, 'custom'));
Example::dump($locale->date($datetime));
Example::dump($locale->date($datetime, 'custom'));

$default->date($datetime)

"30 Dec 2023"

$default->date($datetime, 'custom')

"2023/12/30"

$locale->date($datetime)

"30 дек. 2023"

$locale->date($datetime, 'custom')

"30.12.2023"

持续时间

要格式化持续时间,可以使用内置的Intl格式化器,但它不支持分数秒,并且在不同的区域设置中格式不同(例如,在en_US区域设置中,12345秒是3:25:45,而在ru_RU区域设置中是12 345)。这些原因使得在实际应用中使用它变得困难。为了使duration()更有用,添加了替代语法。

该语法与ICU日期/时间格式语法相同。

<?php declare(strict_types = 1);

use LastDragon_ru\LaraASP\Dev\App\Example;
use LastDragon_ru\LaraASP\Formatter\Formatter;

$default = app()->make(Formatter::class); // For default app locale
$locale  = $default->forLocale('ru_RU');  // For ru_RU locale

Example::dump($default->duration(123.454321));
Example::dump($locale->duration(123.4543));
Example::dump($locale->duration(1_234_543));

$default->duration(123.454321)

"00:02:03.454"

$locale->duration(123.4543)

"00:02:03.454"

$locale->duration(1234543)

"342:55:43.000"

升级

请遵循升级指南

贡献

此包是Laravel出色包集合的一部分。请使用主存储库报告问题、发送拉取请求提问