lacatoire / acriss-code
ACRISS vehicle classification decoder for PHP (Symfony-ready, Laravel-friendly, standalone)
v1.0.0
2025-06-12 18:14 UTC
Requires
- php: >=8.2
- symfony/translation: *
Requires (Dev)
- phpunit/phpunit: ^10.0
- symfony/yaml: *
This package is auto-updated.
Last update: 2025-06-13 07:42:18 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'); // $code is an instance of Acriss\Model\AcrissCode echo $code->category->value; // COMPACT
Translate a code
use Acriss\AcrissTranslator; $translator = new AcrissTranslator($translatorService); // Symfony's TranslatorInterface $labels = $translator->translate($code, 'fr'); // $labels is an instance of Acriss\Model\TranslatedAcrissCode echo $labels->category; // "Compacte" echo $labels->fuelAirCon; // "Essence, avec climatisation"
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); // Symfony\Contracts\Translation\TranslatorInterface
- 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.