lacatoire/acriss-code

ACRISS vehicle classification decoder for PHP (Symfony-ready, Laravel-friendly, standalone)

v1.0.0 2025-06-12 18:14 UTC

This package is auto-updated.

Last update: 2025-06-13 07:42:18 UTC


README

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');

// $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Γ§ais
  • it – Italiano
  • de – Deutsch

Want to add more? PRs welcome πŸ‘Œ

πŸ“„ License

This library is open-sourced under the MIT license.