Передача переменных в метод 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/