передать функцию с аргументом в вызов метода

#php #medoo #flightphp

#php #medoo #flightphp

Вопрос:

Я пытаюсь использовать фреймворк PHP для маршрутизации и фреймворк medoo для использования базы данных.

 //connect database
$database = new medoo([
'database_type' => 'sqlite',
'database_file' => 'db.sqlite'
]);
//my function
function database($database){
$database->insert("ppl", [
"fn" => "joe","ln"=>"doe"]);

}
//
Flight::route('/add/', array(database($database)));
  

Как вызвать мою функцию с аргументом из этого места:

 Flight::route('/add/','database')
  

Пробовал разные варианты, но получал ошибки.

Комментарии:

1. Ошибки, которые вы говорите…

2. да, «указан недопустимый обратный вызов» я читал об обратных вызовах в руководстве по php, но пока не могу заставить его работать.

3. Не уверен, что я делаю, отредактировано…

Ответ №1:

Я не знаю medoo или flight, но вы могли бы использовать анонимную функцию с use :

 Flight::route('/add/',
              function() use($database) {
                  $database->insert("ppl", ["fn"=>"joe","ln"=>"doe"])
              });
  

Я думаю, вам нужно перестроить это в стиль ООП, который сделает его намного проще и модульнее, но в критическом случае, если $database определено в глобальной области видимости:

 function database() {
    $GLOBALS['database']->insert("ppl", ["fn"=>"joe","ln"=>"doe"]);
}

Flight::route('/add/', 'database');