wandersonwhcr/zend-romans

此包已被废弃,不再维护。作者建议使用 wandersonwhcr/laminas-romans 包。

Zend 框架 Romans 集成

v1.0.2 2017-04-23 15:28 UTC

README

已过时 使用 Laminas 项目 Romans 集成

Latest Stable Version License

描述

此包为 Romans 库提供了 Zend 框架集成,提供了工具将罗马数字字符串转换为整数以及相反操作,验证包含此类数字的字符串,最后将这些内容填充为整数。

安装

此包默认使用 Composer 作为仓库。您可以通过在 composer.json 文件的 require 属性中添加包名称来安装它,指向最后一个稳定版本。

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

使用方法

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

过滤器

Zend Romans 提供了一组过滤器,用于将罗马数字字符串转换为整数,以及将整数转换为表示输入为罗马数字的字符串。

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

$value = 'MCMXCIX';

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

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

验证器

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

use Zend\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"',
];
 */

填充器

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

use InvalidArgumentException;
use Zend\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 Zend\Romans\View\Helper\Roman as RomanViewHelper;

$helper = new RomanViewHelper();

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

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

模块

此包作为 Zend 框架模块提供。要初始化此模块,请将包命名空间添加到应用程序已加载模块的配置中。

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

使用此功能时,必须在您的 composer.json 文件中要求 Zend 框架 ModuleManager 和 ServiceManager。

{
    "require": {
        "zendframework/zend-modulemanager": "2.7.*",
        "zendframework/zend-servicemanager": "3.3.*"
    }
}

可用的服务

如果您将此包配置为 Zend 框架模块,将配置许多服务。以下列表显示了使用 Zend\Romans 模块可用的所有服务。带有双箭头的项代表服务别名。

  • Romans\Grammar\Grammar
  • Romans\Lexer\Lexer
  • Romans\Parser\Parser
  • Romans\Filter\IntToRoman
  • Romans\Filter\RomanToInt
  • Zend\Romans\Hydrator\Strategy\Roman
  • FilterManager
    • Zend\Romans\Filter\IntToRoman
    • Zend\Romans\Filter\RomanToInt
    • IntToRoman => Zend\Romans\Filter\IntToRoman
    • intToRoman => Zend\Romans\Filter\IntToRoman
    • inttoroman => Zend\Romans\Filter\IntToRoman
    • RomanToInt => Zend\Romans\Filter\RomanToInt
    • romanToInt => Zend\Romans\Filter\RomanToInt
    • romantoint => Zend\Romans\Filter\RomanToInt
  • 验证器管理器
    • Zend\Romans\Validator\Roman
    • Roman => Zend\Romans\Validator\Roman
    • roman => Zend\Romans\Validator\Roman
  • 视图助手管理器
    • Zend\Romans\View\Helper\Roman
    • Roman => Zend\Romans\View\Helper\Roman
    • roman => Zend\Romans\View\Helper\Roman

许可证

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