2017 © Pedro Peláez
 

library named-enum

Named enums for PHP 7.1+

image

mesavolt/named-enum

Named enums for PHP 7.1+

  • Wednesday, June 6, 2018
  • by chteuchteu
  • Repository
  • 2 Watchers
  • 1 Stars
  • 122 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 5 Versions
  • 91 % Grown

The README.md

Named enum for PHP 7.1 +

Latest Stable Version Build Status Coverage Status License, (*1)

Usage

Add the package to your project :, (*2)

composer require mesavolt/named-enum

Define a class that extends Mesavolt\Enum\NamedEnum with your enum values and names. The values should be defined as class constants (their visibility is up to you) and the names should be declared in a protected static class variable $VALUE_NAMES, indexed by the corresponding value., (*3)

Quick note: By default, NamedEnum::getName($value) silently ignores undefined values and returns null for any undefined value. You can extend Mesavolt\Enum\StrictNamedEnum for a strict check that will throw an \InvalidArgumentException if you pass an undefined enum value to getName($value)., (*4)

<?php

namespace App;


use Mesavolt\Enum\NamedEnum;

abstract class MyEnum extends NamedEnum
{
    public const FOO = 'foo';
    public const BAR = 'bar';

    protected static $VALUE_NAMES = [
        self::FOO => 'Foo name',
        self::BAR => 'Bar name',
    ];
}

Use it in your project :, (*5)

<?php

use App\MyEnum;

$object = new stdClass();
$object->foo = MyEnum::BAR;

echo MyEnum::getName($object->foo); // Bar name

Check NamedEnum's public methods for more usages examples., (*6)

Integration

Symfony >=3 with Twig >1.26

If you use the default auto-configuring feature of Symfony introduced in Symfony 3.3, you only need to register the Mesavolt\Twig\NamedEnumExtension as a service in your services.yml file. Symfony will tag it properly to register it in the twig environment used by your app., (*7)

If you don't use the auto-configuring feature or if it's not available in your version, you need to apply the tags manually when you register the extension as a service., (*8)

# Symfony 3: app/config/services.yml
# Symfony 4: config/services.yaml
services:

    # Use this if you use the default auto-configuring feature of Symfony >=3.3  DI container
    Mesavolt\Twig\NamedEnumExtension: ~

    # Use this if you **don't** use the auto-configuring feature of Symfony >=3.3 DI container
    app.named_enum_extension:
        class: Mesavolt\Twig\NamedEnumExtension
        tags: { name: twig.extension }

Then, you can use the enum_name filter and the enum_name function provided by the extension, in your templates :, (*9)

<?php
// src/Controller/HomeController.php
// This is an example for Symfony 4.
// The code is exactly the same for Symfony 3, only the file locations change.
namespace App\Controller;


use App\Enum;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class HomeController extends Controller
{
    public function index()
    {
        return $this->render('my-template.html.twig', [
            'value1' => Enum::FOO,
            'value2' => Enum::BAR
        ]);
    }
}
{# templates/my-template.html.twig #}

You selected "{{ value1|enum_name('\\App\\MyEnum') }}"
{# You selected "Foo name" #}


You selected {"{ enum_name(value2, '\\App\\MyEnum') }}"
{# You selected "Bar name" #}

Testing

composer dump-autoload # make sure vendor/autoload.php exists
./vendor/bin/phpunit

The Versions

06/06 2018

dev-develop

dev-develop

Named enums for PHP 7.1+

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Avatar mesavolt

24/05 2018

v0.3.0

0.3.0.0

Named enums for PHP 7.1+

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Avatar mesavolt

21/05 2018

v0.2.0

0.2.0.0

Named enums for PHP 7.1+

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Avatar mesavolt

16/05 2018

v0.1.0

0.1.0.0

Named enums for PHP 7.1+

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Avatar mesavolt

15/05 2018

v0.0.0

0.0.0.0

Named enums for PHP 7.1+

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Avatar mesavolt