Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/vendor/phpgt/dom/src/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/phpgt/dom/src/HTMLCollection.php
<?php
namespace Gt\Dom;

use DOMNodeList;

/**
 * Represents a Node list that can only contain Element nodes.
 *
 * @property-read int $length Number of Element nodes in this collection
 */
class HTMLCollection extends NodeList {
	use LiveProperty;

	/** @var Element[] */
	protected $list;
	protected $iteratorKey;

	/** @noinspection PhpMissingParentConstructorInspection */
	public function __construct(DOMNodeList $domNodeList) {
		$this->list = [];
		$this->rewind();

		for($i = 0, $n = $domNodeList->length; $i < $n; $i++) {
			$item = $domNodeList->item($i);

			if(!$item instanceof Element) {
				continue;
			}

			$this->list []= $item;
		}
	}

	/**
	 * Returns the number of Elements contained in this Collection.
	 * Exposed as the $length property.
	 * @return int Number of Elements
	 */
	protected function prop_get_length():int {
		return count($this->list);
	}

	/**
	 * @param string $name Returns the specific Node whose ID or, as a fallback,
	 * name matches the string specified by $name. Matching by name is only done
	 * as a last resort, and only if the referenced element supports the name
	 * attribute.
	 */
	public function namedItem(string $name):?Element {
		$namedElement = null;

// TODO: Use an XPath query here -- it's got to be less costly than iterating.
		foreach($this as $element) {
			if($element->getAttribute("id") === $name) {
				return $element;
			}

			if(is_null($namedElement)
			&& $element->getAttribute("name") === $name) {
				$namedElement = $element;
			}
		}

		return $namedElement;
	}

	/**
	 * Gets the nth Element object in the internal DOMNodeList.
	 * @param int $index
	 * @return Element|null
	 */
	public function item(int $index):?Element {
		return $this->list[$index] ?? null;
	}

// Iterator --------------------------------------------------------------------

	public function rewind():void {
		$this->iteratorKey = 0;
	}

	public function key():int {
		return $this->iteratorKey;
	}

	public function valid():bool {
		return isset($this->list[$this->key()]);
	}

	public function next():void {
		$this->iteratorKey++;
	}

	public function current():?Element {
		return $this->list[$this->key()] ?? null;
	}

// ArrayAccess -----------------------------------------------------------------
	public function offsetExists($offset):bool {
		return isset($offset, $this->list);
	}

	public function offsetGet($offset):?Element {
		return $this->item($offset);
	}

	public function offsetSet($offset, $value):void {
		throw new \BadMethodCallException("HTMLCollection's items are read only");
	}

	public function offsetUnset($offset):void {
		throw new \BadMethodCallException("HTMLCollection's items are read only");
	}

// Countable -------------------------------------------------------------------
	public function count():int {
		return $this->length;
	}
}

Spamworldpro Mini