*/ abstract class AbstractChoiceOption extends AbstractVisibleHtml { use DisabledAttribute; /** * The value of the option * @var string|int|float */ private $value = ''; /** * The label of the option * @var string */ private $text = ''; public function __construct($value, $text) { $this->value = self::correctValue($value); $this->text = strval($text); } /** * Метод возвращает поле типа AbstractChoiceField * @return AbstractChoiceField */ public abstract function field(); /** * Возвращает значение опции * @return string|int|float */ public function value() { return $this->value; } /** * Возвращает текст опции * @return string */ public function text() { return $this->text; } /** * Задёт новый текст для опции * @param string $newText * @return $this */ public function setText($newText) { $this->text = self::correctValue($newText); return $this; } /** * The methods allows to determine is the option selected or not * @return boolean */ public function isSelected() { return $this->field()->isSelected($this); } /** * Отмечает опцию как выбранную * @return $this */ public function select() { $this->field()->select($this); return $this; } public function getAssociativeAttributes() { $attributes = parent::getAssociativeAttributes(); $attributes['value'] = $this->value; $this->appendVisibleAttributes($attributes); $this->appendDisabledAttribute($attributes); $this->field()->appendAttributesToOption($this, $attributes); return $attributes; } private static function correctValue($value) { if (is_string($value) || is_numeric($value)) { return $value; } if (is_null($value)) { return ''; } return strval($value); } }