Re: Function name must be a string error
| From: | Jeffry Killen | Date: | Wed, 05 Dec 2018 01:46:15 +0000 |
| Subject: | Re: Function name must be a string error | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-326617@lists.php.net to get a copy of this message | ||
Horray;
Just as a follow up. It dawned on me that I could pass $_code as an argument to the
recursive method as an alternative. Then it can call the argument variable as a function
without having to call require in every recursion.
I have now gotten past the Function name must be a string error.
Maybe this will help someone with a similar issue.
Jeff K
> On Dec 4, 2018, at 3:30 AM, Enno Woortmann <enno.woortmann@web.de> wrote:
>
> 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@gmail.com> 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@prodigy.net> 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
>>