1<?php 2 3namespace SAML2\XML\md; 4 5use SAML2\Constants; 6use SAML2\Utils; 7use SAML2\XML\saml\Attribute; 8 9/** 10 * Class representing SAML 2 metadata RequestedAttribute. 11 * 12 * @package SimpleSAMLphp 13 */ 14class RequestedAttribute extends Attribute 15{ 16 /** 17 * Whether this attribute is required. 18 * 19 * @var bool|null 20 */ 21 public $isRequired = null; 22 23 /** 24 * Initialize an RequestedAttribute. 25 * 26 * @param \DOMElement|null $xml The XML element we should load. 27 */ 28 public function __construct(\DOMElement $xml = null) 29 { 30 parent::__construct($xml); 31 32 if ($xml === null) { 33 return; 34 } 35 36 $this->isRequired = Utils::parseBoolean($xml, 'isRequired', null); 37 } 38 39 /** 40 * Convert this RequestedAttribute to XML. 41 * 42 * @param \DOMElement $parent The element we should append this RequestedAttribute to. 43 * @return \DOMElement 44 */ 45 public function toXML(\DOMElement $parent) 46 { 47 assert(is_bool($this->isRequired) || is_null($this->isRequired)); 48 49 $e = $this->toXMLInternal($parent, Constants::NS_MD, 'md:RequestedAttribute'); 50 51 if ($this->isRequired === true) { 52 $e->setAttribute('isRequired', 'true'); 53 } elseif ($this->isRequired === false) { 54 $e->setAttribute('isRequired', 'false'); 55 } 56 57 return $e; 58 } 59} 60