Плагин DSL метод 'request' устарел.Вместо этого используйте «$ self-> app-> request» - PullRequest
0 голосов
/ 26 октября 2018

В Perl я использую Framer 2 Dancer и использую этот плагин

use Dancer2::Plugin::Deferred;
use Dancer2::Plugin::Locale::Wolowitz;

Для заявлений, подобных ниже:

my $method = request->method();

my $params = request->params;

Я получаю следующие предупреждения на консоли:

Plugin DSL method 'request' is deprecated. Use '$self->app->request' instead'.

Пожалуйста, дайте ваши рекомендации, чтобы решить это, я не уверен, какой из этих двух модулей вызывает это.

спасибо

1 Ответ

0 голосов
/ 26 октября 2018

Dancer2 в основном объектно-ориентированный.Он всегда передает $self вашим обработчикам маршрутов.Предупреждение довольно ясно.Вы не должны использовать это ключевое слово DSL, а вместо этого получить доступ к запросу через $self->app.

. Вам нужно получить $self из списка аргументов ваших обработчиков маршрута.Неважно, используете ли вы анонимную подпрограмму или ссылку на именованную подпрограмму, в том же пакете или любом другом пакете.

use Dancer2;

get '/' => \&main::foo;

sub foo {
  my $self = shift;
  return $self->app->request->params;
}
...