MVC中控制器与模型的区别

Rom*_*man 12 php model-view-controller controller model codeigniter

我对MVC框架(codeIgniter)中的控制器和模型感到困惑.我清楚地知道控制器方法调用视图和模型方法与数据库交互.但是,我对以下类型的方法感到困惑,这些方法由控制器中的方法调用.

hash_password              //returns hash password. 
valid_email               //validates email format and return true or false
is_logged                //check if session has a variable, returns true or false
generate_random_string  //generates and hashes a random string
Run Code Online (Sandbox Code Playgroud)

它们应该放在控制器还是模型中?

目前,我将所有上述功能放在控制器中.这是对的吗?

Oza*_*ray 9

我认为is_logged应该放在模型中User.请注意,User您可能是您的案例中的客户或您为服务用户建模的任何类.

valid_emailgenerate_random_string更或效用函数少,你可以在一个地方UtilityUtilities模式,让这些都是在你的应用各种控制器可重复使用.

hash_password,可以被放置在任一User模型或Utility模型.我更倾向于将它放在Utility模型中,因为它具有散列函数,用户无需关心.但是,我可以想象,否则会有争论.

以下SO问题(虽然对于不同的框架)也可以作为经验法则:

在Zend Framework 1.10中放置自定义函数的位置