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.24';
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 return unless $class eq 'Catalyst';
132 my $caller = caller(0);
134 # Prepare inheritance
135 unless ( $caller->isa($class) ) {
138 push @{"$caller\::ISA"}, $class;
142 $caller->arguments( [ @arguments ] );
148 Contains the engine class.
152 Contains the logging object. Unless it is already set Catalyst sets this up with a
153 C<Catalyst::Log> object. To use your own log class:
155 $c->log( MyLogger->new );
156 $c->log->info("now logging with my own logger!");
158 Your log class should implement the methods described in the C<Catalyst::Log>
161 =item $c->plugin( $name, $class, @args )
163 Instant plugins for Catalyst.
164 Classdata accessor/mutator will be created, class loaded and instantiated.
166 MyApp->plugin( 'prototype', 'HTML::Prototype' );
168 $c->prototype->define_javascript_functions;
173 my ( $class, $name, $plugin, @args ) = @_;
176 if ( my $error = $UNIVERSAL::require::ERROR ) {
177 Catalyst::Exception->throw(
178 message => qq/Couldn't load instant plugin "$plugin", "$error"/
182 eval { $plugin->import };
183 $class->mk_classdata($name);
185 eval { $obj = $plugin->new(@args) };
188 Catalyst::Exception->throw(
189 message => qq/Couldn't instantiate instant plugin "$plugin", "$@"/
194 $class->log->debug(qq/Initialized instant plugin "$plugin" as "$name"/)
200 =head1 CASE SENSITIVITY
202 By default Catalyst is not case sensitive, so C<MyApp::C::FOO::Bar> becomes
205 But you can activate case sensitivity with a config parameter.
207 MyApp->config->{case_sensitive} = 1;
211 mod_perl2 support is considered experimental and may contain bugs.
217 Join #catalyst on irc.perl.org.
221 http://lists.rawmode.org/mailman/listinfo/catalyst
222 http://lists.rawmode.org/mailman/listinfo/catalyst-dev
226 http://catalyst.perl.org
232 =item L<Catalyst::Manual> - The Catalyst Manual
234 =item L<Catalyst::Engine> - Core Engine
236 =item L<Catalyst::Log> - The Log Class.
238 =item L<Catalyst::Request> - The Request Object
240 =item L<Catalyst::Response> - The Response Object
242 =item L<Catalyst::Test> - The test suite.
248 Sebastian Riedel, C<sri@oook.de>
252 Andy Grundman, Andrew Ford, Andrew Ruthven, Autrijus Tang, Christian Hansen,
253 Christopher Hicks, Dan Sully, Danijel Milicevic, David Naughton,
254 Gary Ashton Jones, Geoff Richards, Jesse Sheidlower, Jody Belka,
255 Johan Lindstrom, Juan Camacho, Leon Brocard, Marcus Ramberg,
256 Tatsuhiko Miyagawa and all the others who've helped.
260 This library is free software . You can redistribute it and/or modify it under
261 the same terms as perl itself.