4 use base qw[ Catalyst::Base Catalyst::Setup ];
5 use UNIVERSAL::require;
6 use Catalyst::Exception;
12 our $CATALYST_SCRIPT_GEN = 4;
14 __PACKAGE__->mk_classdata($_) for qw/arguments dispatcher engine log/;
16 our $VERSION = '5.34';
21 Catalyst - The Elegant MVC Web Application Framework
25 # use the helper to start a new application
29 # add models, views, controllers
30 script/myapp_create.pl model Something
31 script/myapp_create.pl view Stuff
32 script/myapp_create.pl controller Yada
35 script/myapp_server.pl
37 # command line interface
38 script/myapp_test.pl /yada
43 use Catalyst qw/My::Module My::OtherModule/;
45 use Catalyst '-Debug';
47 use Catalyst qw/-Debug -Engine=CGI/;
49 sub default : Private { $_[1]->res->output('Hello') } );
51 sub index : Path('/index.html') {
52 my ( $self, $c ) = @_;
53 $c->res->output('Hello');
57 sub product : Regex('^product[_]*(\d*).html$') {
58 my ( $self, $c ) = @_;
59 $c->stash->{template} = 'product.tt';
60 $c->stash->{product} = $c->req->snippets->[0];
63 See also L<Catalyst::Manual::Intro>
67 The key concept of Catalyst is DRY (Don't Repeat Yourself).
69 See L<Catalyst::Manual> for more documentation.
71 Catalyst plugins can be loaded by naming them as arguments to the "use Catalyst" statement.
72 Omit the C<Catalyst::Plugin::> prefix from the plugin name,
73 so C<Catalyst::Plugin::My::Module> becomes C<My::Module>.
75 use Catalyst 'My::Module';
77 Special flags like -Debug and -Engine can also be specifed as arguments when
80 use Catalyst qw/-Debug My::Module/;
82 The position of plugins and flags in the chain is important, because they are
83 loaded in exactly the order that they appear.
85 The following flags are supported:
91 enables debug output, i.e.:
93 use Catalyst '-Debug';
95 this is equivalent to:
102 Force Catalyst to use a specific engine.
103 Omit the C<Catalyst::Engine::> prefix of the engine name, i.e.:
105 use Catalyst '-Engine=CGI';
115 Overload to enable debug messages.
123 Returns a hashref containing your applications settings.
128 my ( $class, @arguments ) = @_;
130 # We have to limit $class to Catalyst to avoid pushing Catalyst upon every
132 return unless $class eq 'Catalyst';
134 my $caller = caller(0);
136 unless ( $caller->isa('Catalyst') ) {
138 push @{"$caller\::ISA"}, $class;
141 $caller->arguments( [ @arguments ] );
147 Contains the engine class.
151 Contains the logging object. Unless it is already set Catalyst sets this up with a
152 C<Catalyst::Log> object. To use your own log class:
154 $c->log( MyLogger->new );
155 $c->log->info("now logging with my own logger!");
157 Your log class should implement the methods described in the C<Catalyst::Log>
160 =item $c->plugin( $name, $class, @args )
162 Instant plugins for Catalyst.
163 Classdata accessor/mutator will be created, class loaded and instantiated.
165 MyApp->plugin( 'prototype', 'HTML::Prototype' );
167 $c->prototype->define_javascript_functions;
172 my ( $class, $name, $plugin, @args ) = @_;
175 if ( my $error = $UNIVERSAL::require::ERROR ) {
176 Catalyst::Exception->throw(
177 message => qq/Couldn't load instant plugin "$plugin", "$error"/
181 eval { $plugin->import };
182 $class->mk_classdata($name);
184 eval { $obj = $plugin->new(@args) };
187 Catalyst::Exception->throw(
188 message => qq/Couldn't instantiate instant plugin "$plugin", "$@"/
193 $class->log->debug(qq/Initialized instant plugin "$plugin" as "$name"/)
199 =head1 CASE SENSITIVITY
201 By default Catalyst is not case sensitive, so C<MyApp::C::FOO::Bar> becomes
204 But you can activate case sensitivity with a config parameter.
206 MyApp->config->{case_sensitive} = 1;
210 mod_perl2 support is considered experimental and may contain bugs.
216 Join #catalyst on irc.perl.org.
220 http://lists.rawmode.org/mailman/listinfo/catalyst
221 http://lists.rawmode.org/mailman/listinfo/catalyst-dev
225 http://catalyst.perl.org
231 =item L<Catalyst::Manual> - The Catalyst Manual
233 =item L<Catalyst::Engine> - Core Engine
235 =item L<Catalyst::Log> - The Log Class.
237 =item L<Catalyst::Request> - The Request Object
239 =item L<Catalyst::Response> - The Response Object
241 =item L<Catalyst::Test> - The test suite.
293 Sebastian Riedel, C<sri@oook.de>
297 This library is free software . You can redistribute it and/or modify it under
298 the same terms as perl itself.