wandersonwhcr/laminas-romans

Laminas 项目 Romans 集成

v1.1.1 2021-04-01 00:44 UTC

This package is auto-updated.

Last update: 2024-08-29 06:07:16 UTC


README

Laminas 项目 Romans 集成

Build Status Latest Stable Version License

描述

此软件包为 Romans 库提供 Laminas 项目的集成,提供将罗马数字字符串转换为整数以及相反方向的工具,验证包含此类数字的字符串,并最终将内容填充为整数。

安装

此软件包使用 Composer 作为默认存储库。您可以通过在 composer.jsonrequire 属性中添加软件包名称,指向最新稳定版本来安装它。

{
    "require": {
        "wandersonwhcr/laminas-romans": "^1.0"
    }
}

使用方法

此软件包提供与 Laminas 项目一起使用的过滤器、验证器和填充器。此外,此软件包作为 Laminas 模块提供,可自动配置应用程序内的服务,但此操作不是必需的。

过滤器

Laminas Romans 提供了一组过滤器,用于将罗马数字字符串转换为整数以及相反方向的字符串表示。

use Laminas\Romans\Filter\RomanToInt as RomanToIntFilter;
use Laminas\Romans\Filter\IntToRoman as IntToRomanFilter;

$value = 'MCMXCIX';

$filter = new RomanToIntFilter();
$value  = $filter->filter($value); // 1999

$filter = new IntToRomanFilter();
$value  = $filter->filter($value); // MCMXCIX

验证器

此外,此软件包还包含一个验证器,用于验证字符串是否包含有效的罗马数字。

use Laminas\Romans\Validator\Roman as RomanValidator;

$validator = new RomanValidator();

$result = $validator->isValid('MCMXCIX'); // true

$result   = $validator->isValid('IAI'); // false
$messages = $validator->getMessages();

/*
$messages = [
    'unknownToken' => 'Unknown token "A" at position 1',
];
*/

$result   = $validator->isValid('XIIIX'); // false
$messages = $validator->getMessages();

/*
$messages = [
    'invalidRoman' => 'Invalid Roman number "XIIX"',
];
 */

填充器

存在一个填充器策略,负责处理罗马数字。像任何其他 Laminas 策略一样,错误将抛出异常。

use InvalidArgumentException;
use Laminas\Romans\Hydrator\Strategy\Roman as RomanHydratorStrategy;

$value    = 'MCMXCIX';
$strategy = new RomanHydratorStrategy();

try {
    $value = $strategy->hydrate($value); // 1999
    $value = $strategy->extract($value); // MCMXCIX
} catch (InvalidArgumentException $e) {
    // unable to convert
}

视图助手

最后,还有一个视图助手,可以将整数直接转换为罗马数字,使用内部过滤器来完成这项工作。

use Laminas\Romans\View\Helper\Roman as RomanViewHelper;

$helper = new RomanViewHelper();

// Simple Access
echo $helper(1999); // MCMXCIX

// ... or Inside ViewRenderer
echo $this->roman(1999); // MCMXCIX

模块

此软件包作为 Laminas 模块提供。要初始化此模块,将软件包命名空间添加到应用程序加载的模块配置中。

<?php
return [
    'modules' => [
        // ...
        'Laminas\Romans',
        // ...
    ],
];

使用此功能,您必须在 composer.json 文件中要求 Laminas ModuleManager 和 ServiceManager。

{
    "require": {
        "laminas/laminas-modulemanager": "2.10.*",
        "laminas/laminas-servicemanager": "3.6.*"
    }
}

可用服务

如果您将此软件包配置为 Laminas 模块,将配置许多服务。下面的列表显示了与 Laminas\Romans 模块一起提供的所有服务。带有双箭头的条目表示服务别名。

  • Romans\Grammar\Grammar
  • Romans\Lexer\Lexer
  • Romans\Parser\Parser
  • Romans\Filter\IntToRoman
  • Romans\Filter\RomanToInt
  • Laminas\Romans\Hydrator\Strategy\Roman
  • FilterManager
    • Laminas\Romans\Filter\IntToRoman
    • Laminas\Romans\Filter\RomanToInt
    • IntToRoman => Laminas\Romans\Filter\IntToRoman
    • intToRoman => Laminas\Romans\Filter\IntToRoman
    • inttoroman => Laminas\Romans\Filter\IntToRoman
    • RomanToInt => Laminas\Romans\Filter\RomanToInt
    • romanToInt => Laminas\Romans\Filter\RomanToInt
    • romantoint => Laminas\Romans\Filter\RomanToInt
  • ValidatorManager
    • Laminas\Romans\Validator\Roman
    • Roman => Laminas\Romans\Validator\Roman
    • roman => Laminas\Romans\Validator\Roman
  • ViewHelperManager
    • Laminas\Romans\View\Helper\Roman
    • Roman => Laminas\Romans\View\Helper\Roman
    • roman => Laminas\Romans\View\Helper\Roman

开发

您可以使用 Docker Compose 来构建镜像并运行容器以开发测试此软件包。

docker-compose build
docker-compose run romans composer install
docker-compose run romans composer test

许可证

此软件包是开源的,可在 MIT 许可证下使用,该许可证描述在 LICENSE 中。