我知道有很多关于哪个PHP框架是最好的辩论,这不是关于这个的线索;)。这个主题是关于开发人员如何处理属于控制器的关注点的分离。
在MVC-ish框架中,控制器将提供页面(get)并接受表单提交(post)。但是,我发现即使是琐碎的控制器也难以理解。
使用以下CodeIgniter示例:
class TrivialController extends MY_CONTROLLER{
public function login(){
//Load a view containing a login form
}
public function login_p(){
//Load user model + login
//Success / Faillure view
}
}
或
class TrivialController extends MY_CONTROLLER{
public function login(){
if(GET){
//Load a view containing a login form
} else if (POST) {
//Load user model + login
//Success / Faillure view
}
}
}
我发现两种选择都同样麻烦:
if-else
驱动的方法。这将使该方法更难阅读。所以,这是问题所在。你如何在实践中处理这个?
答案 0 :(得分:3)
GET / POST是两个不同但功能上有凝聚力的东西。
这是Web应用程序中非常常见的工作流程:
我认为这些不同,可以分成不同的方法,但足够相似,可以保存在同一个控制器中。
问题在于命名约定。您应该简明地区分command and query操作,并使用object-verb
名称来描述您正在使用的主题,以及您正在使用它做什么。
class TrivialController extends MY_CONTROLLER{
public function askCredentials(){
// Show login form
}
public function verifyCredentials(){
// Login
}
}