В PHP как вы вызываете внутреннюю функцию из отдельной внутренней функции в той же самой функции? - PullRequest
0 голосов
/ 20 апреля 2020

Это немного сложно объяснить, но из этого примера должно быть ясно, что я пытаюсь сделать:


    public function onMessage($data)
    {

    if (!function_exists("sendClientToHost")) {
            $sendClientToHost = function(&$sendThis) use($type) {

                $sendThis += array('type' => $type);


            //.... execute code ....//
         };
        }

        if (!function_exists("sendObjects")) {
            $sendObjects = function() use($data) {

                $user_id = $data->user_id;


                $sendThis = array(
                "msg" => $user_id,);


                $sendClientToHost($sendThis);

            };

        }


    $sendObjects();


}

Я пытаюсь вызвать внутреннюю функцию sendObjects в функции OnMessage, эта часть работает , Однако функция sendObjects имеет критическую ошибку, в которой говорится, что sendClientToHost не определен. Как вызвать sendClientToHost из функции sendObjects?

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Мне нужно было использовать замыкание в другой функции.

$ sendObjects = function () use ($ data, $ sendClientToHost) {...};

0 голосов
/ 20 апреля 2020

Здесь вы вызываете функцию, но вы написали знак доллара в начале, как если бы это была переменная: $sendClientToHost($sendThis);.

Просто удалите «$», и я думаю, что все будет в порядке ...

...