PHPackages                             wandersonwhcr/laminas-romans - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. wandersonwhcr/laminas-romans

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

wandersonwhcr/laminas-romans
============================

Laminas Project Romans Integration

v1.1.1(5y ago)07MITPHPPHP &gt;=7.4

Since Apr 10Pushed 5y ago1 watchersCompare

[ Source](https://github.com/wandersonwhcr/laminas-romans)[ Packagist](https://packagist.org/packages/wandersonwhcr/laminas-romans)[ RSS](/packages/wandersonwhcr-laminas-romans/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (13)Versions (18)Used By (0)

laminas-romans
==============

[](#laminas-romans)

Laminas Project Romans Integration

[![Build Status](https://github.com/wandersonwhcr/laminas-romans/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/wandersonwhcr/laminas-romans/actions/workflows/test.yml?query=branch%3Amain)[![Latest Stable Version](https://camo.githubusercontent.com/db61d842213dea5c6cb5d56f9a19dc4ad7e233c2e102997f670de631ced81508/68747470733a2f2f706f7365722e707567782e6f72672f77616e646572736f6e776863722f6c616d696e61732d726f6d616e732f762f737461626c653f666f726d61743d666c6174)](https://packagist.org/packages/wandersonwhcr/laminas-romans)[![License](https://camo.githubusercontent.com/658731595bfd9b1e1c2d6d3ad9381bf3d370cb22f0958fcb46346b423f1dcbb5/68747470733a2f2f706f7365722e707567782e6f72672f77616e646572736f6e776863722f6c616d696e61732d726f6d616e732f6c6963656e73653f666f726d61743d666c6174)](https://packagist.org/packages/wandersonwhcr/laminas-romans)

Description
-----------

[](#description)

This package provides a Laminas Project integration for [Romans](https://github.com/wandersonwhcr/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
------------

[](#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
-----

[](#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

[](#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

[](#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

[](#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

[](#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

[](#module)

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

```
