使用the Catalyst framework,是否可以自动搜索控制器和模型的另一个目录? lib2/myapp/Controller/*
中的内容会自动加载,我希望$phar->setStub($phar->createDefaultStub("main.php"));
中的内容发生同样的情况。
答案 0 :(得分:0)
我不知道有任何明显的方法可以在不搞乱非常深入的Catalyst内部的情况下完成。在开始如此沉重的魔法之前,我建议你好好考虑为什么你正试图这样做。
如果控制器属于myapp,则它们应该位于lib/myapp/Controller
。如果您有多个应用共享的通用代码,那么应该存在lib/shared/
(或类似内容,并且您的主程序中也可能需要use lib "$HOME/lib/shared"
)。
然后,在myapp中需要共享代码的位置,您可以创建一个存根控制器,例如:
package MyApp::Controller::Foo;
use Moose;
extends 'Shared::Controller::Foo';
# or, if you prefer,
# use base 'Shared::Controller::Foo';
1;
...而MyApp::Controller::Foo
将支持Shared::Controller::Foo
中的所有方法/操作。
我很欣赏该解决方案的可扩展性存在限制,但如果您遇到这些解决方案,我认为您需要重新评估应用的架构。