I hadn't noticed that. My php.ini was set to on, changing it to off gave the
warning.
Having changed:
xml_set_object($this->parser,&$this);
to:
xml_set_object($this->parser,$this);
Stops the warning and the parser works fine.
This is the class I'm using and it works fine:
class parse_words_xml {
var $words;
function parse_words_xml($xml_data) {
$this->words = array();
$this->parser = xml_parser_create();
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler($this->parser,"tag_open","tag_close");
xml_set_character_data_handler($this->parser,"cdata");
$this->parse($xml_data);
}
function parse($xml_data) {
xml_set_object($this->parser,$this);
reset ($xml_data);
while (list (, $data) = each ($xml_data)) {
if (!xml_parse($this->parser, $data)) {
die(sprintf( "XML error: %s at line %d\n\n",
xml_error_string(xml_get_error_code($this->parser)),
xml_get_current_line_number($this->parser)));
}
}
}
function tag_open($parser,$tag,$attributes) {
$this->current_tag = $tag;
switch($tag){
case 'Word':
$this->id = $attributes['id'];
$this->words[$attributes['id']] = 1;
break;
default:
break;
}
}
function cdata($parser,$cdata) {
$this->temp = $cdata;
}
function tag_close($parser,$tag) {
switch($tag){
case 'Word':
$this->words[$this->id] = $this->temp;
$this->temp = '';
break;
default:
break;
}
}
}
"Clay Loveless" <[EMAIL PROTECTED]> wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> Unfortunately, the xml_set_object function does not work to solve this
> problem. I tried using it, and my results were the same as they were when
I
> was not using it.
>
> [I found that the array($this, 'function_name') method instead of 'string
> function_name' for the xml_set_*_handler functions worked just as well,
only
> without this Warning message one gets from PHP 4.2.1 upon using
> xml_set_object($this->parser, &$this):
>
> "PHP Warning: Call-time pass-by-reference has been deprecated - argument
> passed by value; If you would like to pass it by reference, modify the
> declaration of xml_set_object(). If you would like to enable call-time
> pass-by-reference, you can set allow_call_time_pass_reference to true in
> your INI file. However, future versions may not support this any
longer."]
>
>
> Still searching for an answer on this one ...
>
> Thanks,
> -Clay
>
>
>
> > "Peter Clarke" <[EMAIL PROTECTED]>
> >
> > Have a look at:
> > http://www.php.net/manual/en/function.xml-set-object.php
> >
> > xml_set_object($this->parser, &$this);
> >
> >
> >
> > "Clay Loveless" <[EMAIL PROTECTED]> wrote in message
> > [EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> >> Here's a brain-bender ... At least it is for me at the moment. : )
> >>
> >> When I use an XML parser inside a class, the xml_*_handler functions
> > aren't
> >> recognizing "$this->" variables. I can kind of see why ... But would
like
> > it
> >> to work anyway. : )
> >>
> >> Here's an example:
> >>
> >> class Blah
> >> {
> >> var $xmlparser;
> >> var $current_element;
> >>
> >> // ...
> >>
> >> function _parseXML($data)
> >> {
> >> $this->xmlparser = xml_parser_create();
> >> xml_set_element_handler(
> >> $this->xmlparser,
> >> array($this,"_xml_start_element"),
> >> array($this,"_xml_end_element"));
> >> xml_set_character_data_handler(
> >> $this->xmlparser,
> >> array($this,"_xml_character_data"));
> >> xml_parse($this->xmlparser, $data);
> >> xml_parser_free($this->xmlparser);
> >> }
> >>
> >> function _xml_start_element($p, $e_name, $e_attributes)
> >> {
> >> $this->current_element = $e_name;
> >> }
> >>
> >> function _xml_end_element($p, $e_name)
> >> {
> >> // ...
> >> }
> >>
> >> function _xml_character_data($p, $data)
> >> {
> >> echo "element is: ".$this->current_element."\n";
> >> echo "data is: $data\n";
> >> }
> >>
> >> } // end of class Blah
> >>
> >>
> >>
> >> When this XML parser gets called from within the Blah class, the
"element
> >> is:" portion of _xml_character_data comes out blank!
> >>
> >> This sort of makes sense, because the callback functions are "children"
of
> >> the xml_parser_create "parent" ... But should that make the children
> >> ignorant of the "grandparent" variables referred to by $this->varname?
> >>
> >> I hope this makes sense ... Has anyone else encountered this sort of
> >> problem? I'm an old hat at PHP, but am relatively new to both XML
parsing
> >> and writing my own classes.
> >>
> >> Thanks,
> >> Clay
> >>
> >
> >
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php