Catalyst::Model
Реализует те же методы что и Catalyst::Component
Catalyst::Component - базовый класс
Универсальный базовый класс для компонентов Catalyst (Model/View/Controller)
Предоставляет методы new() для создания компонента, config() настройка, и метод process() для обработки выполнения.
Вызов $self->config внутри компонента, крайне не рекомендуется.
Методы
new($app, $arguments)
Вызванный с помощью COMPONENT для инициализации компонента, возвратит объект расположенный в хеше компонента приложения.
COMPONENT
my $component_instance = $component->COMPONENT($app, $arguments);
Если метод представлен, он вызывается Catalyst во время setup_components с помощью класса приложения как $app и вхождение конфига на приложения для этого компонента (для примера, в случае MyApp::Controller::Foo это будет MyApp->config('Controller::Foo' => \%conf)
Аргументы ожидаются как хеш ссылок и соединяются вместе с __PACKAGE__->config хеш ссылок до вызова ->new для создания компонента.
Вы можете переписать это с помощью такой конструкции:
sub COMPONENT {
my ($class, $app, $args) = @_;
$args = $class->merge_config_hashes($class->config, $args);
return $class->new($app, $args);
}
$c->config
$c->config($hashref)
$c->config($key, $value, ...)
Аксессор для доступ к хешу конфига этого компонента. Значения конфига могут быть установлены как пара ключ-значение, или вы можете указать ссылку на хеш. В любом случае конфигурации будут объединены с существующими. Каждый компонент Catalyst имеет свой хеш конфига.
$c->process()
Этот метод по умолчанию, который вызывает Catalyst в диспетчере. К примеру, Views реализуют это действие для генерации содержимого ответа когда вы переадресует к ним. По умолчанию - это абстрактный метод.
$c->merge_config_hashes( $hashref, $hashref )
Объединяет два хеша вместе, рекурсивно, отдавая приоритет расположенным справа. Синоним для метода в Catalyst::Utils
$c->expand_modules( $setup_component_config )
Возвращает список дополнительных компонентов созданных этим компонентом. По умолчанию просто ищет список внутренних пакетов этого компонента.
Дополнительные методы
ACCEPT_CONTEXT($c, @args)
Компоненты Catalyst обычно иницииализируются во время запуска сервера, или как класс или как экземпляр. Однако некоторые компоненты требуют информацию о текущем запросе. Для этого они могут реализовать ACCEPT_CONTEXT метод.
Если имеет место этот метод, он вызывается в течении $c->comp/controller/model/view с текущим $c и дополнительными аргументами (например $c->model('Foo', qw/bar baz/) будет означать, что экземпляр вашей MyApp::Model::Foo, ACCEPT_CONTEXT будет вызван с ($c, 'bar', 'baz') и возвратит значение этого метода в вызвавший код в приложении, лучше чем сам компонент.