如何在催化剂中使用__PACKAGE __-> config命名空间

时间:2012-03-25 14:14:09

标签: perl catalyst

__PACKAGE__->config(namespace => '');

我在Catalyst应用程序的根控制器Root.pm中看到了这个语句 我所知道的是,这个语句用于指定根控制器 现在我想知道的是,这个陈述使用了什么方式,
我可以使用它来指定其他控制器命名空间吗?如果是,怎么样?

1 个答案:

答案 0 :(得分:3)

手册中解释了这两个问题。阅读Actions in Catalyst::Manual::Intro

  

应用程序范围操作

     

[...]代码__PACKAGE__->config( namespace => '' );使控制器的行为就像它的命名空间为空。 [...]空命名空间使得许多URL匹配属性(例如:Path:Local)在URL路径的开头(即应用程序根目录)匹配。


  

覆盖命名空间

     

请注意,__PACKAGE__->config->(namespace => ... )可用于在匹配时覆盖当前命名空间。因此package MyApp::Controller::Example;通常会使用example作为匹配的命名空间,但如果使用__PACKAGE__->config( namespace => 'thing' );特别重写,则会使用命名空间thing进行匹配。