Передача переменных в метод obejct на Flight PHP

В соответствии с документацией Flight PHP использовать объектный метод можно с помощью:

Flight::route('/some/route', [$object, 'method']);

и использовать параметры маршрута с помощью:

Flight::route('/@name/@id', function($name, $id){
    echo "hello, $name ($id)!";
});

Я попытался объединить оба, как это:

Flight::route('/user/@id', [$object, 'method']);

но это не работает Есть ли способ передать параметры в метод объекта?

2 ответа

Глядя на Dispatcher.php (методы callFunction а также invokeMethod), ваш вариант использования должен поддерживаться. Параметры должны поддерживаться одинаково хорошо в анонимных функциях и в методах класса...

Как насчет назначения переменных в замыкании?

Flight::route('/@name/@id', function($name, $id){
    $obj = new Object; // or use a DIC
    $obj->name = $name;
    $obj->id = $id; // or assign these in the constructor
});

Этот код работает для меня:

function someFunction($id) {
  echo 'id: ' . $id;
}

class SomeClass {
    function method1($id) {
      echo 'Class, id: ' . $id;
    }
    function method2($name, $id) {
      echo 'Class, name: ' . $name . ', id: ' . $id;
    }
}
$object = new SomeClass();

Flight::route('/user/@id', array($object, 'method1'));
Flight::route('/user/@id/@name', array($object, 'method2'));
Flight::route('/fun/@id', 'someFunction');

Я не очень хорош с PHP, но это что-то с обратными вызовами: https://www.exakat.io/the-art-of-php-callback/

Другие вопросы по тегам