Thanks to visit codestin.com
Credit goes to github.com

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

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