Skip to content

PHP enums and helpers for ACRISS vehicle classification codes (Category, Type, Transmission, Fuel/AC)

Notifications You must be signed in to change notification settings

lacatoire/acriss-code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Acriss Code

Decode and translate ACRISS vehicle classification codes in PHP.

CI Latest Stable Version License


✨ 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çais
  • it – Italiano
  • de – 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"

About

PHP enums and helpers for ACRISS vehicle classification codes (Category, Type, Transmission, Fuel/AC)

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages