summaryrefslogtreecommitdiff
path: root/vendor/phar-io/manifest/src/xml/ManifestElement.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/phar-io/manifest/src/xml/ManifestElement.php')
-rw-r--r--vendor/phar-io/manifest/src/xml/ManifestElement.php66
1 files changed, 66 insertions, 0 deletions
diff --git a/vendor/phar-io/manifest/src/xml/ManifestElement.php b/vendor/phar-io/manifest/src/xml/ManifestElement.php
new file mode 100644
index 000000000..1f57f547d
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/ManifestElement.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+use DOMElement;
+use DOMNodeList;
+
+class ManifestElement {
+ public const XMLNS = 'https://phar.io/xml/manifest/1.0';
+
+ /** @var DOMElement */
+ private $element;
+
+ public function __construct(DOMElement $element) {
+ $this->element = $element;
+ }
+
+ protected function getAttributeValue(string $name): string {
+ if (!$this->element->hasAttribute($name)) {
+ throw new ManifestElementException(
+ \sprintf(
+ 'Attribute %s not set on element %s',
+ $name,
+ $this->element->localName
+ )
+ );
+ }
+
+ return $this->element->getAttribute($name);
+ }
+
+ protected function getChildByName(string $elementName): DOMElement {
+ $element = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->item(0);
+
+ if (!$element instanceof DOMElement) {
+ throw new ManifestElementException(
+ \sprintf('Element %s missing', $elementName)
+ );
+ }
+
+ return $element;
+ }
+
+ protected function getChildrenByName(string $elementName): DOMNodeList {
+ $elementList = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName);
+
+ if ($elementList->length === 0) {
+ throw new ManifestElementException(
+ \sprintf('Element(s) %s missing', $elementName)
+ );
+ }
+
+ return $elementList;
+ }
+
+ protected function hasChild(string $elementName): bool {
+ return $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->length !== 0;
+ }
+}