From the manual:

http://uk.php.net/manual/en/language.pseudo-types.php#language.types.callback

If you want to change things in the callback, the function (or method) should accept its parameters by reference.

e.g.

class A
{
 function name(&$a, $b, $c)
 {
   $a = $b . $c;
   return;
 }

 function parse()
 {
   // whatever
   // then (calls $this->name())
   $parser->set_handler( "root/page/title", array($this, 'name') );
   // or (calls A::name())
   $parser->set_handler( "root/page/title", array('A', 'name') );
   // more whatever
 }

}

Hope this helps

Cheers

Chris

Thomas Hochstetter wrote:

Hi again,

I have always been wondering how this is done properly:

Here is an example:

[snip]
class A {
  function name( $a, $b, $c) {
     $tmp = array();
     $tmp[a] = $a;
     .
    array_push( $GLOBALS['XMLStack'], $tmp );
 }

 function parse() {
   .. some definitions .
   $parser->set_handler( "root/page/title", "name" );
  . some more stuff here .
 }
}
[/snip]

What I want is to have the callback function name as it is in the above
example. But, obviously, the above code won't work. So, how do I tell the
set_handler function that it must use the name function from the class?
Using:
"A::name" or "$this->name" (if instantiated) . how do these callback
function calls work, because the same issue is with the xml handler
functions in php4 (have not as yet been to v5).

Also, how can I get the data from the callback function out without using
$GLOBALS? I cannot just return an array, can I?

Any ideas.

Thanks so  long.

Thomas



-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to