我在codeigniter中有我的auth库,它访问数据库以检查电子邮件/密码组合是否正确。
如果我坚持MVC实践,我应该将与数据库交互的功能移动到我的模型中,还是最好将它保留在原来的位置,以便将来可以使用它?
除了我必须重新编写库并在我的模型中创建函数这一事实之外,对我来说没有太大的区别,但是如果它应该是这样的那么就是它。
答案 0 :(得分:1)
通常,经验法则是将处理数据和执行数据库查询所涉及的所有函数都放在模型中。不同的开发人员有不同的方法,但我认为你不应该破坏MVC模型并将数据库代码放在你的控制器中。
我一直在开发一个名为WolfAuth的auth库,供任何人分叉和贡献/使用:https://github.com/Vheissu/WolfAuth-for-Codeigniter-2.0-
正如你在我的模型中看到的,我有一个get用户函数,它可以接受一个needle和haystack值。所以我可以在我的库中编写一大堆不同的函数,用于通过ID获取用户或通过使用不同的参数调用此模型函数来记录用户,而不是调用不同的函数。
在WolfAuth中,您可以看到所有函数都将使用不同的值调用模型函数get_users。我相信有一个函数可以检索多个数据而不是编写单独的函数比使用6个函数要简单得多,当一个函数可以完成这6个函数可以做的所有事情时。
所以回答你的问题:在模型中编写与数据库交互的函数,但在库中保留相同的函数来调用模型函数并返回其值。
此外,如果您想随意获取代码片段并从我的auth库中借用想法并在您的库中使用它们,如果它可以帮助您更好地理解破解代码。