How could I extend objects provided with Document Object Model? Seems that there is no way according to this issue.
class Application_Model_XmlSchema extends DOMElement
{
const ELEMENT_NAME = 'schema';
/**
* @var DOMElement
*/
private $_schema;
/**
* @param DOMDocument $document
* @return void
*/
public function __construct(DOMDocument $document) {
$this->setSchema($document->getElementsByTagName(self::ELEMENT_NAME)->item(0));
}
/**
* @param DOMElement $schema
* @return void
*/
public function setSchema(DOMElement $schema){
$this->_schema = $schema;
}
/**
* @return DOMElement
*/
public function getSchema(){
return $this->_schema;
}
/**
* @param string $name
* @param array $arguments
* @return mixed
*/
public function __call($name, $arguments) {
if (method_exists($this->_schema, $name)) {
return call_user_func_array(
array($this->_schema, $name),
$arguments
);
}
}
}
$version = $this->getRequest()->getParam('version', null);
$encoding = $this->getRequest()->getParam('encoding', null);
$source = 'http://www.w3.org/2001/XMLSchema.xsd';
$document = new DOMDocument($version, $encoding);
$document->load($source);
$xmlSchema = new Application_Model_XmlSchema($document);
$xmlSchema->getAttribute('version');
I got an error:
Warning: DOMElement::getAttribute(): Couldn't fetch Application_Model_XmlSchema in C:\Nevermind.php on line newvermind