. */ namespace vierbergenlars\AuthserverExternalAccountBundle\ValueObject; class Button { /** * @var string */ private $label; /** * @var string */ private $url; /** * @var string|null */ private $icon = null; /** * @var string */ private $style = 'default'; public function __construct(array $config) { $valid = ['label', 'url', 'icon', 'style']; foreach($config as $k => $v) { if(!in_array($k, $valid)) throw new \LogicException(sprintf('Configuration key "%s" is not valid.', $k)); $this->{$k} = $v; } $required = ['label', 'url']; foreach($required as $k) { if(!$this->{$k}) throw new \LogicException(sprintf('Configuration key "%s" is missing', $k)); } } /** * @return string */ public function getLabel() { return $this->label; } /** * @param string $label * @return Button */ public function setLabel($label) { $this->label = $label; return $this; } /** * @return string */ public function getUrl() { return $this->url; } /** * @param string $url * @return Button */ public function setUrl($url) { $this->url = $url; return $this; } /** * @return null|string */ public function getIcon() { return $this->icon; } /** * @param null|string $icon * @return Button */ public function setIcon($icon) { $this->icon = $icon; return $this; } /** * @return string */ public function getStyle() { return $this->style; } /** * @param string $style * @return Button */ public function setStyle($style) { $this->style = $style; return $this; } }