一个更好的替代我的方法(Symfony 1.4模块)


A better alternative to my approach (Symfony 1.4 modules)

在我追求完美和极简主义的过程中,我在这里向你们提出了这个问题,寻求是否有比我现有的更好、更具替代性的选择。

我有一个模块,有两个不同的模板。本质上,第一个是测验模板,第二个是显示测验结果的页面。测验是一种形式,而结果页面则不是。在我的问答页面上,表单的操作本质上是"模块/quizResults?"?id='$quizId

现在,对于测验操作,我进行数据库查询以检索属于测验的一组问题,然后当帖子发布时,调用的操作是quizResults的操作,在这里,我必须将我的用户的答案选项与测验问题的正确答案选项进行比较。本质上,我必须再次查询数据库,以检索另一个数据库中测验的问题集。我觉得这有点过头了,我很生气。

我认为可以有更好的解决方案。我可以回到同一个测试页面,但这需要模板的复杂性,以及让事情变得更模糊的操作。

有其他选择吗?

感谢

您可以实现一些选项来满足您的要求,但您需要问问自己,增加的复杂性是否会超过较小的性能增益,尤其是在优化查询的情况下。

选项#1:会话

当您从测试操作加载问题时,您可以将问题添加到用户的会话中,然后当用户发布测试结果时,只需参考会话中存储的问题即可。

选项2:Memcached

与上面相同,但您可以将问题存储到memcache中,而不是将问题存储在用户会话中,因此在计算结果时,而不是进行另一个数据库查询,而是从缓存层提取问题。

您试图以错误的方式解决此问题。

性能在这里绝对不是问题。但问题在于程序员的性能。如果你必须手动创建每个查询并传递所有正确的变量,这将花费大量时间。您需要的是一个框架,它将允许您以更快的方式构建必要的逻辑。如果你知道如何完美地做到这一点,你会赚很多钱,在那之前,你必须像我们其他人一样努力:P

假设提交页面显示的都是好的,如果都是正确的,或者不正确的,我会写一个myprojectQuestionValidator,并在我的问题表单中使用它,每个问题/答案一个。然后,验证器可以对照数据库中的正确答案来检查每个答案。同意Frits的意见,不要担心性能-这是过早的优化IMO。将应用程序分解为概念组件,并在需要时担心优化。