Ошибка при использовании Am php параллельно с пользовательской функцией - PullRequest
2 голосов
/ 12 марта 2020

Я пытаюсь вызвать пользовательскую функцию, используя Worker \ enqueueCallable.
Я поместил функцию в отдельный файл и использовал composer для ее автозагрузки.

И я получаю сообщение об ошибке:

Неустранимая ошибка: Uncaught TypeError: Аргумент 1, передаваемый в Amp \ Parallel \ Worker \ enqueueCallable (), должен вызываться, заданная строка "

Структура моей папки

Project Folder/
    app/
       funcs.php
       caller.php
    main.php
    composer.json

Используемое приложение пространства имен сверху в вызывающем абоненте. php и функции. php

А затем в composer. json использовали следующий фрагмент и использовали composer dumpautoload -o

{
    "autoload": {
        "psr-4": {
            "app\\": "app/"
        },
        "files": [ "app/funcs.php" ]
    },
    "require": {
        "amphp/parallel": "^1.3",
        "amphp/parallel-functions": "^0.1.3"
    }

} 

С main. php Я звоню caller. php, который вызывает функцию, определенную в funcs. php

funcs. php

namespace app;
function f1($param1){
  #Do some stuff 
}

caller. php

namespace app;

use Amp\Parallel\Worker;
use Amp\Promise;

class cls
{
    function __construct()
    {

    }

    function Invoker()
    {
        // If I call the function, its working.
        f1($param1);
        // When I am using its not working.
        $promises[] = Worker\enqueueCallable('f1', $param1);  
    }

}

main. php

require __DIR__ . '\vendor\autoload.php';
use app\cls;

$obj = new cls();
$obj->Invoker();

Я использую windows -10, сервер WAMP, с PHP версия 7.3.5.

...