php-extended/php-enumerable

一个简单的库,用于提供在 PHP 中访问可枚举功能

7.0.6 2024-07-31 13:52 UTC

README

一个简单的库,用于提供在 PHP 中访问可枚举功能

coverage build status

安装

此库的安装是通过 composer 进行的,所有类的自动加载都通过其自动加载器完成。

  • 他们的网站下载 composer.phar
  • 然后运行以下命令将此库作为依赖项安装
  • php composer.phar require php-extended/php-enumerable ^7

基本用法

此库的基本用法如下。这是一个示例实现,给了一个语言选择将其放入一个封闭列表中。


class Language extends \Enumerable
{
	
	/**
	 * The German language.
	 * 
	 * @return \Language
	 */
	public static function DE() : \Language
	{
		$l = static::getValue('de');
		if($l === null)
			$l = static::setValue('de', new static('German'));
		return static::getValue('de');
	}
	
	/**
	 * The English language.
	 *
	 * @return \Language
	 */
	public static function EN() : \Language
	{
		$l = static::getValue('en');
		if($l === null)
			$l = static::setValue('en', new static('English'));
		return static::getValue('en');
	}
	
	/**
	 * The French language.
	 *
	 * @return \Language
	 */
	public static function FR() : \Language
	{
		$l = static::getValue('fr');
		if($l === null)
			$l = static::setValue('fr', new static('French'));
		return static::getValue('fr');
	}
	
	/**
	 * The name of the language, in english.
	 *
	 * @var string
	 */
	private $_name;
	
	/**
	 * Builds a new Language object with given name.
	 *
	 * @param string $name the name of the language, in english.
	 */
	private function __construct(string $name)
	{
		$this->_name = $name;
	}
	
	/**
	 * Gets the name of this Language object.
	 *
	 * @return string
	 */
	public function getName() : string
	{
		return $this->_name;
	}
	
}

此类声明了三个可枚举的实例,分别是 Language::DE()Language::EN()Language::FR()。这些实例分别将字符串 'de''en''fr' 设置为它们的 ID。

请注意,Language::EN() === Language::findById('en') 为真,因为可枚举对象设计为单例。

许可证

MIT (见许可证文件)。