php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #4025 unable to use $this when calling array_walk from a class method.
Submitted: 2000-04-04 04:59 UTC Modified: 2001-09-09 09:31 UTC
From: php at tsquires dot demon dot co dot uk Assigned:
Status: Not a bug Package: Misbehaving function
PHP Version: 3.0.15 OS: Linux RH6.1 / WinNT4
Private report: No CVE-ID: None
 [2000-04-04 04:59 UTC] php at tsquires dot demon dot co dot uk
I would like to do something like this: 

class example { 
function print_a_list ( $an_array ) 
{.......} 

function do_something { 
{.... 
array_walk( fruits, "$this->print_a_list" ); 
....} 
} 

The error returned is 
Warning: Unable to call () - function does not exist in inc\example_class.php 

To get it working I have done this 

class example { 

function do_something { 
{ 
  if(!defined('PRINT_FUNCTION')) 
  { 
    define('PRINT_FUNCTION', TRUE); 
    function print_a_list ( $an_array ) 
    {.......} 
  } 
  .... 
  array_walk( fruits, "print_a_list" ); 
  .... 
} //end do_something 
} //end example class 

The define is to stop errors when I call the do_something method more than once for a single instance of the example class. If I don't it gives me a Cannot Redelare error. 
This is not really perfect becasue I have to declare print_a_list twice if I want to use it outside the do_something function.  Plus the code is abit messy. 

I've asked experts-exchange.com and studied the docs but I can find a way around it.  I've also tried it using php4 with the same results.
Thanks for your time,
Tim.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-09-09 09:31 UTC] sterling@php.net
not a bug, ask php support questions on
php-general@lists.php.net
 
PHP Copyright © 2001-2020 The PHP Group
All rights reserved.
Last updated: Mon Apr 06 20:01:24 2020 UTC