Web lists-archives.com

Re: Function name must be a string error




Hi Jeff,

try

(self::$_proc)(/*args*/);

This will work if you are using PHP >= 7.0

Additional ways are described in: https://stackoverflow.com/questions/7067536/how-to-call-a-closure-that-is-a-class-variable

regards,

Enno

Am 04.12.2018 um 02:44 schrieb Jeffry Killen:
On Dec 3, 2018, at 5:19 PM, Aziz Saleh <azizsaleh@xxxxxxxxx> wrote:

var_dump(self::$_proc) before the function call, what do you get?

object(Closure)#2 (2) {
   ["this"]=>
   object(_FS_RECURSOR)#1 (0) {
   }
   ["parameter"]=>
   array(4) {
     ["$_src"]=>
     string(10) "<required>"
     ["$_type"]=>
     string(10) "<required>"
     ["$_list"]=>
     string(10) "<required>"
     ["$_localArgs"]=>
     string(10) "<required>"
   }
}

On Mon, Dec 3, 2018 at 8:01 PM Jeffry Killen <jekillen@xxxxxxxxxxx> wrote:
Hello again;

I have solved this before. But it has been too long ago.
I don't remember what the fix was;

file with function definition:

$_funct = function(/*args*/){ // code}

class def:

private static $_proc = '';

__construct() requires file with $_funct definition
and assigns it to self::$_proc

require(/*file with funct definition*/)

self::$_proc = $_funct;

later in $_POST processing the function is called:

self::$_proc(/*args*/) // ->  Function name must be a string

There are actually more steps to this, but it would require
a lot of code reproduced here for it to make sense. This abstraction
is about as simple as I can represent it.

In the processing the self::$_proc function is being called under
different circumstances. The error occurs on the first time it is
called. So It appears that it is not a case where one particular
line has a problem and the others don't.

This has been working elsewhere in testing in the same project.

I google the error and didn't get listings for the same type of issue.

Thanks for time and attention;
Jeff K