ID: 12959
User updated by: [EMAIL PROTECTED]
Old Status: Bogus
Status: Open
Bug Type: XML related
Operating System: Win98SE/Linux
PHP Version: 4.0.6
New Comment:

$this outside a class? All references to $this are inside the class methods.

Previous Comments:

[2001-08-25 09:49:27] [EMAIL PROTECTED]

I should have been clearer this ISNT a bug, its an error in your programming, ask on 
the php-general list.

- James


[2001-08-25 09:47:51] [EMAIL PROTECTED]

I noticed this bug is reported in several ways here (I didn't see these before 
posting, the 10 bug on 1 page limit, oops :). I hope this demonstrates this bug is not 
yet solved, and very annoying. (The script should also be clearer than others)


[2001-08-25 09:47:02] [EMAIL PROTECTED]

Ask on the PHP-GEneral mailling list, you are trying to use $this outside of a class 
so it does not work.

- James


[2001-08-25 09:41:10] [EMAIL PROTECTED]

When you use XML methods in a script, $this doesn't get set or is buggy. That means 
you can't use instance variables or methods of that object.

When you run the following script you only get SE,SE,EE,EE but the variables content 
and instancevar aren't set. The only solution I could think of is that $this points to 
a wrong object, not the object that the XML methods are called in.

Example script:
class ContentParser
    var $parser, $content = "";
    var $instancevar;

    function ContentParser()
        $this->parser = xml_parser_create();
        xml_set_object($this->parser, &$this);
        xml_set_element_handler($this->parser, "start_element", "end_element");
        xml_set_character_data_handler($this->parser, "character_data");

    function parse_text ($data)
        return xml_parse ($this->parser, $data, true);

    function add_content($text)
        $this->content .= $text;

    function processing_instruction($parser, $target, $data)


    function start_element($parser, $name, $attribs)
        echo "SE<br>";
        $this->add_content("Start_element $name<br>");
        $this->instancevar = "I should be set!!!";

    function end_element($parser, $name)
        echo "EE<br>";
        $this->add_content("End element $name<br>");

    function character_data($parser, $data)

$c = new ContentParser();
$c->parse_text("<document><paragraph>Well this doesn't work. 

echo $c->content; // Zip. No bonus.
echo $c->instancevar;

Am I doing something wrong or is this really a bug?


Edit this bug report at

PHP Development Mailing List <>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to