annotate vendor/phar-io/manifest/src/xml/ManifestElement.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents 5311817fb629
children
rev   line source
Chris@2 1 <?php
Chris@2 2 /*
Chris@2 3 * This file is part of PharIo\Manifest.
Chris@2 4 *
Chris@2 5 * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de>
Chris@2 6 *
Chris@2 7 * For the full copyright and license information, please view the LICENSE
Chris@2 8 * file that was distributed with this source code.
Chris@2 9 */
Chris@2 10
Chris@2 11 namespace PharIo\Manifest;
Chris@2 12
Chris@2 13 use DOMElement;
Chris@2 14 use DOMNodeList;
Chris@2 15
Chris@2 16 class ManifestElement {
Chris@2 17 const XMLNS = 'https://phar.io/xml/manifest/1.0';
Chris@2 18
Chris@2 19 /**
Chris@2 20 * @var DOMElement
Chris@2 21 */
Chris@2 22 private $element;
Chris@2 23
Chris@2 24 /**
Chris@2 25 * ContainsElement constructor.
Chris@2 26 *
Chris@2 27 * @param DOMElement $element
Chris@2 28 */
Chris@2 29 public function __construct(DOMElement $element) {
Chris@2 30 $this->element = $element;
Chris@2 31 }
Chris@2 32
Chris@2 33 /**
Chris@2 34 * @param string $name
Chris@2 35 *
Chris@2 36 * @return string
Chris@2 37 *
Chris@2 38 * @throws ManifestElementException
Chris@2 39 */
Chris@2 40 protected function getAttributeValue($name) {
Chris@2 41 if (!$this->element->hasAttribute($name)) {
Chris@2 42 throw new ManifestElementException(
Chris@2 43 sprintf(
Chris@2 44 'Attribute %s not set on element %s',
Chris@2 45 $name,
Chris@2 46 $this->element->localName
Chris@2 47 )
Chris@2 48 );
Chris@2 49 }
Chris@2 50
Chris@2 51 return $this->element->getAttribute($name);
Chris@2 52 }
Chris@2 53
Chris@2 54 /**
Chris@2 55 * @param $elementName
Chris@2 56 *
Chris@2 57 * @return DOMElement
Chris@2 58 *
Chris@2 59 * @throws ManifestElementException
Chris@2 60 */
Chris@2 61 protected function getChildByName($elementName) {
Chris@2 62 $element = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->item(0);
Chris@2 63
Chris@2 64 if (!$element instanceof DOMElement) {
Chris@2 65 throw new ManifestElementException(
Chris@2 66 sprintf('Element %s missing', $elementName)
Chris@2 67 );
Chris@2 68 }
Chris@2 69
Chris@2 70 return $element;
Chris@2 71 }
Chris@2 72
Chris@2 73 /**
Chris@2 74 * @param $elementName
Chris@2 75 *
Chris@2 76 * @return DOMNodeList
Chris@2 77 *
Chris@2 78 * @throws ManifestElementException
Chris@2 79 */
Chris@2 80 protected function getChildrenByName($elementName) {
Chris@2 81 $elementList = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName);
Chris@2 82
Chris@2 83 if ($elementList->length === 0) {
Chris@2 84 throw new ManifestElementException(
Chris@2 85 sprintf('Element(s) %s missing', $elementName)
Chris@2 86 );
Chris@2 87 }
Chris@2 88
Chris@2 89 return $elementList;
Chris@2 90 }
Chris@2 91
Chris@2 92 /**
Chris@2 93 * @param string $elementName
Chris@2 94 *
Chris@2 95 * @return bool
Chris@2 96 */
Chris@2 97 protected function hasChild($elementName) {
Chris@2 98 return $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->length !== 0;
Chris@2 99 }
Chris@2 100 }