Re: Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_API.c
| From: | Marcus Boerger | Date: | Mon, 01 Dec 2003 21:40:02 +0000 |
| Subject: | Re: Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_API.c | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-5948@lists.php.net to get a copy of this message | ||
Hello Stanislav,
Monday, December 1, 2003, 5:51:20 PM, you wrote:
> AMT>> Are we discussing this feature's technical or aesthetic merits? Or
> AMT>> both?
> Technical.
> AMT>> foreach ($dom->getElementsByTagname('person') as $person) {
> AMT>> list($firstname) =
> $person->getElementsByTagname('firstname');
> AMT>> $firstname_text_value = $firstname->firstChild->nodeValue;
> AMT>> }
> AMT>>
> AMT>> Compare that to:
> AMT>>
> AMT>> foreach($s->person as $person) {
> AMT>> $firstname_text_value = $person->firstname;
> AMT>> }
> AMT>>
> AMT>> You tell me which one "nobody can understand."
> Both can be understood, but in the first case you know wat is going on (so
> you can rely on $s->person being array and you would be able to do:
> $elements = $dom->getElementsByTagname('person');
> do_something_with($elements[0]);
> and in the second case there's so much magic you don't know what the hell
> is really going on. That's OK when you need to do just that, that stops to
> be OK when you want to slightly modify the behaviour and discover the
> magic is tightly coupled with particular case of use. For example, what
> exactly is $person->firstname there? Tag, or some attribute, or contents?
> What is $s->person - is it list of all tags with name 'person' contained
> in $s or is it element with ID 'person' in $s or maybe it is 'person'
> attribute of tag $s? How can I see it from that code? I can't.
print($xml->iWant->ToHave->TheFirstName->OfThisPerson());
Yeah that looks pretty stupid...
print($xml->Person->element["Name"]->Attributes["First"]);
or was it
print($xml->Person->element["Name"]->First->__toString);
i don't know!
Thats's the place SimpleXML was designed for. To allow you to write
easy code that does the object binding automatically:
print($xml->Person->Name->First);
--
Best regards,
Marcus mailto:helly@php.net