Un truc qui me manque énormément avec PHP : les énumérations. C'est tellement pratique en .NET.
J'ai mis au point une petite classe pour pallier ce manque :
<?php
namespace Wiip;
abstract class Enum
{
protected $value;
public function __construct($value)
{
$this->value = $value;
}
/**
* @return string
*/
public function __toString()
{
return (string)$this->value;
}
/**
* @return array
*/
public static function getConstList()
{
$rf = new \ReflectionClass(get_called_class());
return $rf->getConstants();
}
}
Pour créer votre énumération, il faut créer une classe dérivée avec des constantes pour chaque valeur. Par exemple :
<?php
namespace Wiip;
use Wiip\Enum;
class DealStatus extends Enum
{
const LOST = 'lost';
const PENDING = 'pending';
const WON = 'won';
}
On peut ensuite utiliser le type hinting pour imposer l'utilisation de l'énumération sur des méthodes :
public function setStatus(DealStatus $status)
{
$this->status = $status;
}
Et on peut obtenir un tableau avec toutes les valeurs de l'énumération avec la méthode statique getConstList
:
DealStatus::getConstList()
Add new comment