Re: SimpleXML's atXPath method
| From: | Rowan Collins | Date: | Sat, 07 Jan 2017 16:26:36 +0000 |
| Subject: | Re: SimpleXML's atXPath method | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-97555@lists.php.net to get a copy of this message | ||
On 06/01/2017 14:03, Willian Veiga wrote:
Hello, What do you think about a new method, called atXPath, that would return a single SimpleXMLElement? Details: https://github.com/php/php-src/pull/1717 https://bugs.php.net/bug.php?id=45201 Thank you, Willian.My first thought on this was "what does the 'at' mean?" I see now that it's copied from another library, but "atXPath" really doesn't make me think "xpath for single element". My second thought is that this feature is actually no longer needed. The original feature request was to avoid the need for an intermediate variable when you know you're getting back one result: $firstresult=$xml->xpath('element[@called="XYZ"]'); $secondresult=$firstresult[0]->xpath('child[@named="ABC"]'); $finalresult=$secondresult[0]; But in all versions of PHP since 5.4 you can simply add the [0] on the end of the function call anyway: $finalresult=$xml->xpath('element[@called="XYZ"]')[0]->xpath('child[@named="ABC"]')[0]; Like the original proposal for an extra parameter, this extends to selecting whichever result you want, as long as you're sure it exists. Example: https://3v4l.org/1k9rk If you don't know for sure that there will be enough results, then chaining will give an error either way, and this isn't really any different from any other method that might or might not return the expected object. Regards, -- Rowan Collins [IMSoP]