Autor Zpráva
Darker
Profil
Udělal jsem toto:
class CeiXML extends SimpleXMLElement {
  public function niceXML() {
          $dom = new DOMDocument('1.0');
          $dom->presevreWhiteSpace = false;
          $dom->formatOutput = true;
          $dom->loadXML($this->asXML());
          return $dom->saveXML();
    }
}
$n = new SimpleXMLElement("<body></body>");
echo $n->niceXML();
Našel jsem někde na PHP.net podobný způsob rozšiřování třídy. Ale bohužel - nefunguje:
Fatal error: Call to undefined method SimpleXMLElement::niceXML() in C:\[...]\UpdateServer.php on line 107

Dost mě to mate.
Mike8748
Profil
řádek 10, musíš vytvářet instanci CeiXML, ne SimpleXmlElement
Darker
Profil
Aha, chápu.
A jde to udělat tak, aby se funkce oběvila v původní třídě? Případně nějak na existující SimpleXMLElement nasadit CeiXML?


No, moc nechápu proč mi funkce vrací neformátované XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<clients>
    <client version="1.0" date="1.1.2012">127.0.0.1</client>
<client version="1.0" date="9.05.2012">192.168.0.3</client></clients>
Nox
Profil
Co znamená "na existující SimpleXMLElement nasadit CeiXML"? Prostře používej teda CeiXML (new CeiXML)

Extends nerozšíří danou třídu, ale vytvoří novou, dědící tu původní, má k dispozici její výbavu ... ale samozřejmě ji nepřepíše
Darker
Profil
Nox:
Co ale udělat s návratovou hodnotou funkce simplexml_load_file? Teď ji nemohu použít, musím používat výhradně OOP. Nevím jestli mě to ve skutečnosti nějak omezuje, ale zajímá mě jak to vyřešit.

A proč mi nefunguje DOMDocument::formatOutput někdo netuší? Dřív (rok zpět) mi to fungovalo jak mělo.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: