__PACKAGE__->config(namespace => '');
我在Catalyst应用程序的根控制器Root.pm
中看到了这个语句
我所知道的是,这个语句用于指定根控制器
现在我想知道的是,这个陈述使用了什么方式,
我可以使用它来指定其他控制器命名空间吗?如果是,怎么样?
答案 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
进行匹配。