我只是对模特的经验法则感到好奇。通常,我仅在需要添加/编辑或更新对象的数据库条目的情况下使用它们。
但是,我正在构建一个应用程序,其中包含一个“配置”表,其中包含各种数据,例如上次更新,这将控制何时应该显示应用程序中的某些功能。在这种情况下,我将主要需要从配置表中检索数据。是否值得将这些配置方法放在模型中?
我很想知道更有经验的编码员如何在CI中使用MVC方法 - 示例伪方法(例如,与您在模型和控制器中使用的相同对象相关的方法)将是最有帮助的。 / p>
答案 0 :(得分:7)
“是否值得在模型中使用这些配置方法?”
是的,绝对,只是为了防止你在处理配置设置表的每个控制器中编写相同的getter和setter。编写一次getter和setter(理想情况下,在MY_Model中以通用方式编写)并在模型中编写一次复杂查询,然后根据需要在尽可能多的库,控制器或视图中调用它们。
通过使用模型,您可以编写接口而不是实现。
意味着从控制器中抽象模型的好处在于,您的控制器可以不确定数据的存储方式。只要模型方法始终以控制器期望的格式提供结果,您就可以决定将数据从数据库切换到xml到ini文件。简而言之,当您切换数据源时,您只需更新模型的内部方法而不是控制器。
最后,我认为MVC规则允许视图直接从模型请求数据。为此,您可以构建CodeIgniter帮助程序,以便在使用该模型检索配置设置的视图中使用,这与本机config_item()公共函数的工作方式非常相似。
答案 1 :(得分:1)
您将M与V& C分开的原因与您将CSS与HTML分开的相同 - 抽象,易于重用以及更轻松,更易读的代码。
另请注意,对于其他MVC平台,您将无法选择。仅仅因为可以忽略该方法(在CI中)并不意味着应该这样做。