On Sat, 21 Jun 2003 19:24:26 +0200, you wrote: >I want to call this generic echo function within a class, but have >trouble referencing the output function with $this-> . >Any suggestions? Maybe there is a better solution to this? > >This is within a class: > >[snip] ># generic WALK functions > function walkit($array) > { > array_walk($array,"$this->output"); //not >working > } > > function output($item,$key) > { > echo "$key. $item<br />\n"; > }
You want to apply a function that's wrapped in a class to a given array? My first reaction is that your best approach is to invoke a function within a class, without creating an instance of that class. See the :: operator. The following code covers several ways of calling functions wrapped in classes. You probably want the last two calls: <? /* Class A has method B */ class A { function B ($s = "None") { echo ("<p>input : $s</p>"); } } /* $C is an instance of A */ $C = new A (); /* $D is an array of strings */ $D = array('item 1', 'item 2', 'item 3', 'item 4'); /* invoke A::B */ A::B ('call 1'); /* invoke $C->B */ $C->B ('call 2'); /* invoke A::B via call_user_func() */ call_user_func (array('A', 'B'), 'call 3'); /* invoke $C->B via call_user_func() */ call_user_func (array($C, 'B'), 'call 4'); /* invoke A::B via call_user_func_array() */ call_user_func_array (array('A', 'B'), array('call 5')); /* invoke $C->B via call_user_func_array() */ call_user_func_array (array($C, 'B'), array('call 6')); /* apply A::B to $D via array_walk() */ array_walk ($D, array('A', 'B')); /* apply $C->B to $D via array_walk() */ array_walk ($D, array($C, 'B')); ?> -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php