wandersonwhcr / zend-romans
Zend Framework Romans Integration
Installs: 17
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/wandersonwhcr/zend-romans
Requires
- php: ^7.0
- wandersonwhcr/romans: ^1.0
- zendframework/zend-filter: 2.7.*
- zendframework/zend-hydrator: 2.2.*
- zendframework/zend-validator: 2.9.*
- zendframework/zend-view: 2.9.*
Requires (Dev)
- jakub-onderka/php-parallel-lint: 0.9.*
- phpmd/phpmd: 2.6.*
- phpunit/phpunit: 6.1.*
- sebastian/phpcpd: 3.0.*
- squizlabs/php_codesniffer: 2.8.*
- zendframework/zend-modulemanager: 2.7.*
- zendframework/zend-mvc: 3.0.*
- zendframework/zend-servicemanager: 3.3.*
Suggests
- zendframework/zend-modulemanager: Needed to load this package as Zend Framework module
- zendframework/zend-servicemanager: Allows the use of service factories into Zend Framework
README
DEPRECATED use Laminas Project Romans Integration
Description
This package provides a Zend Framework 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/zend-romans": "^1.0"
}
}
Usage
This package provide filters, validators and hydrators to use with Zend Framework projects. Also, this package is provided as a Zend Framework module, automatically configuring services inside application, but this action is not required.
Filters
Zend 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 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
Validator
Also, this package include a validator to verify if a string contains a valid
Roman number.
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"', ]; */
Hydrator
There is a hydrator strategy, responsible to handle Roman numbers. Like any other Zend Framework strategy, exceptions will be throw for errors.
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 }
ViewHelper
Finally, there is a view helper to convert int to Roman numbers directly,
using an internal filter for this job.
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
Module
This package is provided as a Zend Framework module. To initialize this module, add the package namespace into application loaded modules configuration.
<?php return [ 'modules' => [ // ... 'Zend\Romans', // ... ], ];
Using this feature you must require Zend Framework ModuleManager and
ServiceManager in your composer.json file.
{
"require": {
"zendframework/zend-modulemanager": "2.7.*",
"zendframework/zend-servicemanager": "3.3.*"
}
}
Services Available
If you configure this package as a Zend Framework module, there is a lot of
services configured. The list below shows all services available with
Zend\Romans module. Items with double-arrow represents services aliases.
Romans\Grammar\GrammarRomans\Lexer\LexerRomans\Parser\ParserRomans\Filter\IntToRomanRomans\Filter\RomanToIntZend\Romans\Hydrator\Strategy\RomanFilterManagerZend\Romans\Filter\IntToRomanZend\Romans\Filter\RomanToIntIntToRoman=>Zend\Romans\Filter\IntToRomanintToRoman=>Zend\Romans\Filter\IntToRomaninttoroman=>Zend\Romans\Filter\IntToRomanRomanToInt=>Zend\Romans\Filter\RomanToIntromanToInt=>Zend\Romans\Filter\RomanToIntromantoint=>Zend\Romans\Filter\RomanToInt
ValidatorManagerZend\Romans\Validator\RomanRoman=>Zend\Romans\Validator\Romanroman=>Zend\Romans\Validator\Roman
ViewHelperManagerZend\Romans\View\Helper\RomanRoman=>Zend\Romans\View\Helper\Romanroman=>Zend\Romans\View\Helper\Roman
License
This package is opensource and available under license MIT described in LICENSE.