Tom wrote:
Hi
I'm batting my head against a wall on this one...
I have a class that has a constructor which sets some initial
conditions, and then a public function that does some work. I want to be
able to call this function from an external array_walk call, but when I
try and reference it as $myClass->myFunction in the array_walk call, I
get an error back saying that this is an invalid function.
eg)
<?php
include "../includes/aClass.class";
$myArray = array("item1"=>"firstItem", "item2"=>"secondItem");
$myClass = new aClass;
array_walk($myArray,'$myClass->aMemberFunction');
try changing this line to:
array_walk($myArray, array($myClass,'aMemberFunction'));
or if you prefer to take the route of your second attempt read on...
?>
As a workaround, I redifined the class so that there was a public
function which made the array_walk call with the worker function defined
internally as follows, but this throws another issue in that if I create
multiple instances of the class then I get an error to say that the
internal function is already defined ...
which is correct, you are trying to create this function multiple times.
*Fatal error*: Cannot redeclare aFunction() (previously declared in
/usr/local/apache2/htdocs/includes/functions.php:23) in
*/usr/local/apache2/htdocs/includes/functions.php* on line *23*
class aClass
{
some other stuff, constructor etc
public function aPublicFunction($anArray)
{
global $aRetrunString;
function aFunction($value, $key)
{
global $aReturnString;
$aReturnString = $aReturnString.$value; }
array_walk($anArray,'aFunction');
return $aReturnString;
}
wrap the function def. like so:
if (!function_exists('aFunction')) {
function aFunction($value, $key)
{
global $aReturnString;
$aReturnString = $aReturnString.$value;
}
}
OR define the function outside of the class e.g.
function aFunction($value, $key)
{
global $aReturnString;
$aReturnString = $aReturnString.$value;
}
BTW: using a global in the way you do in this function is a bad idea.
array_walk() is defined as follows:
bool array_walk ( array &array, callback funcname [, mixed userdata])
check out the manual for info on the last arg:
http://nl2.php.net/array_walk
}
Can anyone help me to get either solution to a working state?
By the way...
apache 2.0.49
php-5.0.2
Thanks very much
Tom
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php