wandersonwhcr/laminas-romans 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

wandersonwhcr/laminas-romans

Composer 安装命令:

composer require wandersonwhcr/laminas-romans

包简介

Laminas Project Romans Integration

README 文档

README

Laminas Project Romans Integration

Build Status Latest Stable Version License

Description

This package provides a Laminas Project integration for Romans library, providing tools to filter a string with a Roman number to int and vice-versa, validate a string that contains this type of number and, finally, hydrate the content to int.

Installation

This package uses Composer as default repository. You can install it adding the name of package in require attribute of composer.json, pointing to the last stable version.

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

Usage

This package provide filters, validators and hydrators to use with Laminas projects. Also, this package is provided as a Laminas module, automatically configuring services inside application, but this action is not required.

Filters

Laminas Romans provides a couple of filters to convert a string with Roman number to int and a Integer to a string that represents the input as Roman number.

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

Validator

Also, this package include a validator to verify if a string contains a valid Roman number.

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

Hydrator

There is a hydrator strategy, responsible to handle Roman numbers. Like any other Laminas strategy, exceptions will be throw for errors.

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
}

ViewHelper

Finally, there is a view helper to convert int to Roman numbers directly, using an internal filter for this job.

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

Module

This package is provided as a Laminas module. To initialize this module, add the package namespace into application loaded modules configuration.

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

Using this feature you must require Laminas ModuleManager and ServiceManager in your composer.json file.

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

Services Available

If you configure this package as a Laminas module, there is a lot of services configured. The list below shows all services available with Laminas\Romans module. Items with double-arrow represents services aliases.

  • 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

Development

You can use Docker Compose to build an image and run a container to develop and test this package.

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

License

This package is opensource and available under license MIT described in LICENSE.

wandersonwhcr/laminas-romans 适用场景与选型建议

wandersonwhcr/laminas-romans 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 7 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 03 月 26 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「format」 「converter」 「roman」 「roman-number」 「roman-numeral」 「laminas」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 wandersonwhcr/laminas-romans 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 wandersonwhcr/laminas-romans 我们能提供哪些服务?
定制开发 / 二次开发

基于 wandersonwhcr/laminas-romans 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 7
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-03-26