一段时间以来,我一直想使用CGI::Application
重新开发我的主页。上次我将它从PHP重写为perl时,我开发了一些东西,它基本上是CGI::App
所做的事情的一个子集,而那些事情几乎没有完成。
我一直遇到的问题与侧边栏内容有关,并且想要基本上运行各种应用程序。我想要一个WikiWikiWeb、一个照片库、一些邮件表单和一个文章数据库/博客;所有这些都存在基于CGI::App
的模块。但我希望它们都使用相同的侧边栏内容,而且侧边栏内容可能因用户而异。
PerlMonks上的这个节点激发了我的兴趣。作者告诉一位熟人,他遵守一个CGI::App
最多应该有10-12个状态的规则;不止于此,您需要将其拆分或重新考虑您的设计。所有CGI::App
都继承自一个公共超类,因此它们共享相同的数据库连接、模板等。
所以,我一直在调查这个问题。PM上的一个节点指出,他的ISP使用CGI::App
,其中有数百种运行模式分布在许多应用程序中;他们创建了一个用于会话管理和访问控制的模块,该模块调用usebaseCGI::Application
;然后每个应用程序调用usebaseControl
,它们都自动拥有相同的会话管理和访问权限,以及CGI::Application
。
另一个节点提到了同样的事情,但提供了更多细节。该作者为每个应用程序编写了一个模块,每个模块都继承自一个超类:UserManager.pm
、Survey.pm
、RSS.pm
、Search.pm
等。您为该超类创建一个API,每个CGI::App
都利用该API来完成其工作。
这似乎也是CheesePizza背后的想法,CheesePizza是一个用于构建应用程序的基于CGI::App
的框架。(所有比萨开始时都是奶酪比萨;您只需添加配料即可。)但是,问题是我必须在CGI::App
之上学习另一个框架,而不是凭直觉了解自己的框架。
但是我该如何编写超类呢?回到最初引起我兴趣的节点,我发现了一个后来的回复,描述了你是如何做到这一点的。关键是你覆盖了print
方法——这允许你自定义输出,你可以从这里调用创建侧边栏块的函数,并输出CGI::App的内容
您刚刚调用了模板的主要内容区域。
工厂的谷物……