Simon Willison’s Weblog


Note to self

13th August 2003

When writing an XML parsing class in PHP, don’t forget the ampersands in the following code snippet:

xml_set_element_handler($parser, array(&$this, '_tagOpen'), array(&$this, '_tagClose'));
xml_set_character_data_handler($parser, array(&$this, '_cdata'));

Failure to include them can lead to two days of debugging, frustration and hair loss. Solution found thanks to Keith’s PHP rant (which itself reads like the result of several days of hell). Roll on PHP 5, where objects are passed by reference by default.

This is Note to self by Simon Willison, posted on 13th August 2003.

Next: PHP Library Tips

Previous: Python never copies implicitly

Previously hosted at