The title is a bit confusing but I hope I will be able to explain my challenge.
I am extending the PHP DOMDocument class like below:
<?php
use DOMXPath;
use DOMDocument;
class BookXML extends \DOMDocument
{
public function filterByYear(int $year)
{
$books = [];
$document = new self();
$xpath = new DOMXPath($document);
$booksObjs = $document->documentElement;
$query = 'string(year)';
foreach ($booksObjs->childNodes as $booksObj) {
$yearxml = $xpath->evaluate($query, $booksObj);
if ($yearxml == $year) {
$books[] = $booksObj;
}
}
return $books;
}
}
$xml = new BookXML();
$xml->loadXML($content);
$filteredXML = $xml->filterByYear(2015);
The loadXML
method belongs to the parent class (DOMDocument), but I need it in its instantiated state in the child class so that I can access the loaded document, and I should not pass any more arguments to the filterByYear
method. I tried new self()
but it only creates a fresh new intsance of the current class. I need the instansiated object so that I can access the xml content that was loaded outside of the class. I am new to OOP so I hope my expalnation makes sense.