lacatoire / acriss-code
ACRISS vehicle classification decoder for PHP (Symfony-ready, Laravel-friendly, standalone)
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/lacatoire/acriss-code
Requires
- php: >=8.2
- symfony/translation: *
Requires (Dev)
- phpunit/phpunit: ^10.0
- symfony/yaml: *
This package is auto-updated.
Last update: 2025-09-30 13:35:27 UTC
README
Decode and translate ACRISS vehicle classification codes in PHP.
β¨ What is this?
lacatoire/acriss-code
is a PHP library to parse, validate, and translate ACRISS codes (used by rental companies to describe vehicles).
It supports typed enums, Symfony integration, and multilingual translations (EN, FR, IT).
π Installation
composer require lacatoire/acriss-code
Symfony Flex will register the bundle automatically if you're using Symfony.
β Features
- β Strongly-typed with PHP enums
- β Decode ACRISS 4-letter codes into structured objects
- β Translate ACRISS codes into human-readable strings (EN, FR, IT)
- β Framework-agnostic core (usable with Laravel, Symfony, or standalone)
- β Symfony integration via bundle
- β 100% tested with PHPUnit
𦩠Usage
Parse a code
use Acriss\AcrissCodeParser; $parser = new AcrissCodeParser(); $code = $parser->parse('CDMR'); echo $code->category->value;
Translate a code
use Acriss\AcrissTranslator; $translator = new AcrissTranslator($translatorService); $labels = $translator->translate($code, 'fr'); echo $labels->category; echo $labels->fuelAirCon;
Get full details
use Acriss\AcrissCodeDetails; $details = (new AcrissCodeDetails($parser, $translator))->get('CDMR', 'it'); // $details->original is an AcrissCode // $details->translated is a TranslatedAcrissCode echo $details->translated->transmission; // "Manuale"
𧬠Data Model
AcrissCode
class AcrissCode { public AcrissCategory $category; public AcrissType $type; public TransmissionDrive $transmission; public FuelAirConditioning $fuelAirCon; }
TranslatedAcrissCode
class TranslatedAcrissCode { public string $category; public string $type; public string $transmission; public string $fuelAirCon; }
AcrissCodeDetails
class AcrissCodeDetails { public AcrissCode $original; public TranslatedAcrissCode $translated; }
π§ͺ Testing
composer install ./vendor/bin/phpunit
βοΈ Framework Integration
Symfony
use Acriss\AcrissTranslator; $translator = new AcrissTranslator($this->translator);
- Compatible with Symfony translation (TranslatorInterface)
- Drop translations in translations/messages.[locale].yaml
- Autowiring-ready if registered as a bundle (optional)
Laravel
use Illuminate\Translation\Translator; use Acriss\AcrissTranslator; $acriss = new AcrissTranslator(app(Translator::class));
- Use any Laravel translator via adapter or service container
Stand-alone PHP
use Symfony\Component\Translation\Translator; use Symfony\Component\Translation\Loader\YamlFileLoader; use Acriss\AcrissTranslator; $translator = new Translator('fr'); $translator->addLoader('yaml', new YamlFileLoader()); $translator->addResource('yaml', __DIR__.'/translations/messages.fr.yaml', 'fr'); $acriss = new AcrissTranslator($translator);
π Project Structure
src/
Acriss/
Enum/ // ACRISS enums (category, type, etc.)
Model/ // AcrissCode value object
AcrissCodeParser.php
AcrissTranslator.php
AcrissCodeDetails.php
tests/ // PHPUnit tests
translations/ // Symfony-compatible translations (en, fr, it, de)
π Supported Locales
en
β English (default)fr
β FranΓ§aisit
β Italianode
β Deutsch
Want to add more? PRs welcome π
π License
This library is open-sourced under the MIT license.
Launch phpunit, phpstan, composer without anything
docker run --rm -v "${PWD}:/app" -w /app php:8.3-cli bash -c "apt update && apt install -y git unzip curl > /dev/null && curl -sS https://getcomposer.org/installer | php && php composer.phar install && php vendor/bin/phpunit"