X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FComponent.pm;h=1c61eb2bcf888fd86abbd740b51f80628ffddc0f;hb=fb495632d15d5aa112371bb5c3c39a6189ddb9a0;hp=bccd3f951005e26166160d607c94d84abc1c1e69;hpb=5d02e7902fb093a28deeea34bd4bd8a729e78be4;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Component.pm b/lib/Catalyst/Component.pm index bccd3f9..1c61eb2 100644 --- a/lib/Catalyst/Component.pm +++ b/lib/Catalyst/Component.pm @@ -85,8 +85,6 @@ sub BUILDARGS { } elsif (Class::MOP::is_class_loaded($_[0]) && $_[0]->isa('Catalyst') && ref($_[1]) eq 'HASH') { $args = $_[1]; - } elsif ($_[0] eq $_[1]) { - $args = $_[1]; } else { $args = +{ @_ }; } @@ -129,7 +127,7 @@ sub config { # TODO maybe this should be a ClassData option? my $class = blessed($self) || $self; my $meta = Class::MOP::get_metaclass_by_name($class); - unless ($meta->has_package_symbol('$_config')) { + unless (${ $meta->get_or_add_package_symbol('$_config') }) { # Call merge_hashes to ensure we deep copy the parent # config onto the subclass $self->_config( Catalyst::Utils::merge_hashes($config, {}) ); @@ -172,7 +170,7 @@ to be stored in the application's component hash. C<< my $component_instance = $component->COMPONENT($app, $arguments); >> -If this method is present (as it is on all Catalyst::Component subclasses, +If this method is present (as it is on all Catalyst::Component subclasses), it is called by Catalyst during setup_components with the application class as $app and any config entry on the application for this component (for example, in the case of MyApp::Controller::Foo this would be @@ -187,7 +185,7 @@ something like this: sub COMPONENT { my ($class, $app, $args) = @_; - $args = $self->merge_config_hashes($self->config, $args); + $args = $class->merge_config_hashes($class->config, $args); return $class->new($app, $args); } @@ -202,6 +200,12 @@ key value pair, or you can specify a hashref. In either case the keys will be merged with any existing config settings. Each component in a Catalyst application has its own config hash. +The component's config hash is merged with any config entry on the +application for this component and passed to C (as mentioned +above at L). The common practice to access the merged +config is to use a Moose attribute for each config entry on the +receiving component. + =head2 $c->process() This is the default method called on a Catalyst component in the dispatcher.