CGI::Application. Замещаемые методы CGI::Application

Частичный перевод CGI::Application / Methods to possibly override . Третья из четырех частей перевода. Остальные будут опубликованы позднее. Примеры кода - авторские.

При желании, Вы можете произвести замещение перечисленных методов родительского класса своими собственными. Это расширит Ваши возможности в использовании и конфигурировании CGI::Application.

Почти всегда перезаписывается метод setup(). Все остальные методы - замещаются достаточно редко.

Если заглянуть в исходный код модуля Application.pm, можно заметить, что родительские методы teardown(), cgiapp_init(), cgiapp_prerun() и cgiapp_postrun() определены, вызываются в нужный момент, но никакой работы не выполняют:

Эти методы предназначены именно для удобства разработчиков.

setup()

Этот метод вызывается методом new() автоматически. Метод setup() используется для задания конфигурации приложения.

В рамках setup() возможен вызов специальных методов:

  • mode_param();
  • start_mode();
  • error_mode();
  • run_modes();
  • tmpl_path().

Чаще всего, setup() используется только для того, чтобы задать список всех возможных режимов работы приложения и определить режим, который будет запускаться по-умолчанию.

Пример:

teardown()

Метод вызывается после выполнения обработчиков режимов приложения.

cgiapp_init()

Метод cgiapp_init() вызывается на выполнение перед вызовом метода setup(). Метод получает в свое распоряжение все параметры, которые были переданы методу new().

cgiapp_prerun()

Метод cgiapp_prerun() вызывается перед запуском одного из режимов работы (run mode) приложения.

Метод cgiapp_prerun() получает на вход те же данные, которые передаются затем обработчикам режимов. Cgiapp_prerun() вызывается только, если определен в коде.

cgiapp_postrun()

Метод cgiapp_postrun() вызывается на выполнение после
того, как будут выполнены обработчики режимов, но до того, как начнут формироваться HTTP-заголовки.

Cgiapp_postrun() вызывается только, если определен в коде приложения.

Метод удобен, если требуется дополнительно обработать возвращаемые данные (например, при работе с шаблонизаторами) или внести изменения в HTTP-заголовки (например, организовать переадресацию).

На вход cgiapp_postrun() получает ссылку на объект CGI::Application и ссылку на возвращенные обработчиком режима данные.

cgiapp_get_query()

Стандартный способ получения переданных клиентом параметров - это использование метода query() модуля CGI.pm.

Замещение метода cgiapp_get_query() позволяет использовать для получения параметров иные способы, например, с помощью модуля CGI::Simple или, если у Вы работаете с mod_perl, CGI::Application::Plugin::Apache.

Главное, чтобы соблюдалась некоторая совместимость с API CGI.pm, в частности, с методом param() CGI.pm.