DOKK / manpages / debian 12 / libmojolicious-perl / Mojolicious::Plugins.3pm.en
Mojolicious::Plugins(3pm) User Contributed Perl Documentation Mojolicious::Plugins(3pm)

Mojolicious::Plugins - Plugin manager

  use Mojolicious::Plugins;
  my $plugins = Mojolicious::Plugins->new;
  push @{$plugins->namespaces}, 'MyApp::Plugin';

Mojolicious::Plugins is the plugin manager of Mojolicious.

The following plugins are included in the Mojolicious distribution as examples.

Perl-ish configuration files.
General purpose helper collection, loaded automatically.
Renderer for plain embedded Perl templates, loaded automatically.
Renderer for more sophisticated embedded Perl templates, loaded automatically.
Route condition for all kinds of headers, loaded automatically.
JSON configuration files.
Mount whole Mojolicious applications.
YAML configuration files.
Template specific helper collection, loaded automatically.

Mojolicious::Plugins inherits all events from Mojo::EventEmitter.

Mojolicious::Plugins implements the following attributes.

  my $namespaces = $plugins->namespaces;
  $plugins       = $plugins->namespaces(['Mojolicious::Plugin']);

Namespaces to load plugins from, defaults to Mojolicious::Plugin.

  # Add another namespace to load plugins from
  push @{$plugins->namespaces}, 'MyApp::Plugin';

Mojolicious::Plugins inherits all methods from Mojo::EventEmitter and implements the following new ones.

  $plugins->emit_chain('foo');
  $plugins->emit_chain(foo => 123);

Emit events as chained hooks.

  $plugins = $plugins->emit_hook('foo');
  $plugins = $plugins->emit_hook(foo => 123);

Emit events as hooks.

  $plugins = $plugins->emit_hook_reverse('foo');
  $plugins = $plugins->emit_hook_reverse(foo => 123);

Emit events as hooks in reverse order.

  my $plugin = $plugins->load_plugin('some_thing');
  my $plugin = $plugins->load_plugin('SomeThing');
  my $plugin = $plugins->load_plugin('MyApp::Plugin::SomeThing');

Load a plugin from the configured namespaces or by full module name.

  $plugins->register_plugin('some_thing', Mojolicious->new);
  $plugins->register_plugin('some_thing', Mojolicious->new, foo => 23);
  $plugins->register_plugin('some_thing', Mojolicious->new, {foo => 23});
  $plugins->register_plugin('SomeThing', Mojolicious->new);
  $plugins->register_plugin('SomeThing', Mojolicious->new, foo => 23);
  $plugins->register_plugin('SomeThing', Mojolicious->new, {foo => 23});
  $plugins->register_plugin('MyApp::Plugin::SomeThing', Mojolicious->new);
  $plugins->register_plugin(
    'MyApp::Plugin::SomeThing', Mojolicious->new, foo => 23);
  $plugins->register_plugin(
    'MyApp::Plugin::SomeThing', Mojolicious->new, {foo => 23});

Load a plugin from the configured namespaces or by full module name and run "register", optional arguments are passed through.

Mojolicious, Mojolicious::Guides, <https://mojolicious.org>.

2022-12-22 perl v5.36.0