2017 © Pedro Peláez
 

library enum

PHP Enum implementation

image

phps-cans/enum

PHP Enum implementation

  • Thursday, January 19, 2017
  • by xhuberty
  • Repository
  • 2 Watchers
  • 0 Stars
  • 4 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 56 Forks
  • 0 Open issues
  • 14 Versions
  • 0 % Grown

The README.md

PHP Enum implementation inspired from SplEnum

Build Status Latest Stable Version Total Downloads, (*1)

Why?

First, and mainly, SplEnum is not integrated to PHP, you have to install it separately., (*2)

Using an enum instead of class constants provides the following advantages:, (*3)

  • You can type-hint: function setAction(Action $action) {
  • You can enrich the enum with methods (e.g. format, parse, …)
  • You can extend the enum to add new values (make your enum final to prevent it)
  • You can get a list of all the possible values (see below)

This Enum class is not intended to replace class constants, but only to be used when it makes sense., (*4)

Installation

composer require myclabs/php-enum

Declaration

use MyCLabs\Enum\Enum;

/**
 * Action enum
 */
class Action extends Enum
{
    const VIEW = 'view';
    const EDIT = 'edit';
}

Usage

$action = new Action(Action::VIEW);

// or
$action = Action::VIEW();

As you can see, static methods are automatically implemented to provide quick access to an enum value., (*5)

One advantage over using class constants is to be able to type-hint enum values:, (*6)

function setAction(Action $action) {
    // ...
}

Documentation

  • __construct() The constructor checks that the value exist in the enum
  • __toString() You can echo $myValue, it will display the enum value (value of the constant)
  • getValue() Returns the current value of the enum
  • getKey() Returns the key of the current value on Enum
  • equals() Tests whether enum instances are equal (returns true if enum values are equal, false otherwise)

Static methods:, (*7)

  • toArray() method Returns all possible values as an array (constant name in key, constant value in value)
  • keys() Returns the names (keys) of all constants in the Enum class
  • values() Returns instances of the Enum class of all Enum constants (constant name in key, Enum instance in value)
  • isValid() Check if tested value is valid on enum set
  • isValidKey() Check if tested key is valid on enum set
  • search() Return key for searched value

Static methods

class Action extends Enum
{
    const VIEW = 'view';
    const EDIT = 'edit';
}

// Static method:
$action = Action::VIEW();
$action = Action::EDIT();

Static method helpers are implemented using __callStatic()., (*8)

If you care about IDE autocompletion, you can either implement the static methods yourself:, (*9)

class Action extends Enum
{
    const VIEW = 'view';

    /**
     * @return Action
     */
    public static function VIEW() {
        return new Action(self::VIEW);
    }
}

or you can use phpdoc (this is supported in PhpStorm for example):, (*10)

/**
 * @method static Action VIEW()
 * @method static Action EDIT()
 */
class Action extends Enum
{
    const VIEW = 'view';
    const EDIT = 'edit';
}

The Versions

19/01 2017

1.0.x-dev

1.0.9999999.9999999-dev https://github.com/phps-cans/enum

PHP Enum implementation

  Sources   Download

MIT

The Requires

  • php >=7.0.0

 

The Development Requires

enum

19/01 2017

1.6.0

1.6.0.0 https://github.com/phps-cans/enum

PHP Enum implementation

  Sources   Download

MIT

The Requires

  • php >=7.0.0

 

The Development Requires

enum

09/10 2016

1.5.0

1.5.0.0 http://github.com/myclabs/php-enum

PHP Enum implementation

  Sources   Download

MIT

The Requires

  • php >=5.3

 

The Development Requires

enum

01/08 2016

1.4.2

1.4.2.0 http://github.com/myclabs/php-enum

PHP Enum implementation

  Sources   Download

MIT

The Requires

  • php >=5.3

 

The Development Requires

enum

22/07 2015

1.4.1

1.4.1.0 http://github.com/myclabs/php-enum

PHP Enum implementation

  Sources   Download

MIT

The Requires

  • php >=5.3

 

The Development Requires

enum

19/05 2015

1.4.0

1.4.0.0 http://github.com/myclabs/php-enum

PHP Enum implementation

  Sources   Download

MIT

The Requires

  • php >=5.3

 

The Development Requires

enum

15/02 2015

1.3.2

1.3.2.0 http://github.com/myclabs/php-enum

PHP Enum implementation

  Sources   Download

MIT

The Requires

  • php >=5.3

 

The Development Requires

enum

03/02 2015

1.3.1

1.3.1.0 http://github.com/myclabs/php-enum

PHP Enum implementation

  Sources   Download

MIT

The Requires

  • php >=5.3

 

The Development Requires

enum

30/01 2015

1.3.0

1.3.0.0 http://github.com/myclabs/php-enum

PHP Enum implementation

  Sources   Download

MIT

The Requires

  • php >=5.3

 

The Development Requires

enum

11/11 2013

1.2.1

1.2.1.0 http://github.com/myclabs/php-enum

PHP Enum implementation

  Sources   Download

MIT

enum

24/07 2013

1.2.0

1.2.0.0 http://github.com/myclabs/php-enum

PHP Enum implementation

  Sources   Download

MIT

enum

20/03 2013

1.1.0

1.1.0.0 http://github.com/myclabs/php-enum

PHP Enum implementation

  Sources   Download

MIT

enum

19/03 2013

1.0.1

1.0.1.0 http://github.com/myc-sense/php-enum

PHP Enum implementation

  Sources   Download

MIT

enum

19/03 2013

1.0.0

1.0.0.0

PHP Enum implementation

  Sources   Download