brzez/php-magic-enum

v0.9.8 2016-06-19 16:04 UTC

This package is not auto-updated.

Last update: 2024-09-24 21:01:52 UTC


README

易于使用和扩展PHP的枚举值对象

概述

PHP缺少枚举。每个人通常只是使用const值,这实际上并不提供类型安全,并且可以创建混乱的代码。

这可能是对这个问题的解决方案。它提供了一个枚举值对象。

这个魔法枚举可以通过魔法方法(名称与const相同)实例化,这些方法创建具有const值的新枚举实例。

示例枚举

class OrderStatus extends \MagicEnum\MagicEnum
{
	const CREATED        = 1;
	const COMPLETE       = 2;
	const CANCELLED      = 3;
	const PROCESSING     = 4;

	// easy way to extend with the status (for labels/translations etc)
	public function getLabel()
	{
		$name = strtolower($this->getName());
		return "order_status.${name}";
	}
}

用法

// create new instance:
$status = OrderStatus::PROCESSING();
$status->getValue() // => 4

// type safety
public function setStatus(OrderStatus $status)
{
  $this->status = $status;
}
// safe setter (but less annoying)
public function setStatus($status)
{
  if($status instanceof OrderStatus){
    $this->status = $status;
  }else{
    $this->status = new OrderStatus($status); // this validates if $status is defined in OrderStatus const values
  }
}

额外功能

{# it's easy to extend the enums with some additional features for example: #}
{{ order.status.label|trans }}

待办事项

  • 添加到Packagist
  • 编写通过Composer安装的帮助
  • 编写更多用法帮助