在我的MVC PHP应用程序中,我把这个构建函数放在哪里?
我正在尝试将我的PHP应用程序转换成更多的MVC应用程序。我对MVC没有太多的经验,也不完全理解其中的一些/所有概念,也不完全理解如何使用PHP,因此我需要一些帮助来理解特定函数的用途 此函数根据用户是否登录返回一些HTML在我的MVC PHP应用程序中,我把这个构建函数放在哪里?,php,oop,model-view-controller,Php,Oop,Model View Controller,我正在尝试将我的PHP应用程序转换成更多的MVC应用程序。我对MVC没有太多的经验,也不完全理解其中的一些/所有概念,也不完全理解如何使用PHP,因此我需要一些帮助来理解特定函数的用途 此函数根据用户是否登录返回一些HTML public function buildLoggedInMessage() { if ($this->User->isLoggedIn()) { return ' You are logged in as <strong>'
public function buildLoggedInMessage() {
if ($this->User->isLoggedIn()) {
return ' You are logged in as <strong>'.$this->User->getUsername().'</strong> (<a href="/logout.php">logout</a>)';
} else {
return ' <a href="/login.php">Login</a>';
}
}
控制器询问模型用户是否已登录
谢谢。如果用户通过身份验证,则将此功能放入您调用登录功能的控制器中,然后它将设置会话或闪存数据,即$this->session->set_flashdata'success',您以$username'登录; 其他的
重定向“登录” 我认为视图不应该包含任何业务逻辑。视图应该专注于展示内容,所以第二个解决方案是糟糕的实践 更重要的是,由于视图关注于表示,而模型处理大部分业务逻辑,因此控制器应该只做必要的事情来链接视图和模型,这意味着从模型中获取数据,然后将数据插入视图中 所以这一行代码毫无意义,因为它意味着您在控制器中实现了业务逻辑:
$this->Controller->isLoggedIn()
现在让我们看看您的第一个解决方案
public function buildLoggedInMessage() {
if ($this->User->isLoggedIn()) {
return ' You are logged in as <strong>'.$this->User->getUsername().'</strong> (<a href="/logout.php">logout</a>)';
} else {
return ' <a href="/login.php">Login</a>';
}
}
创建MVC框架不是一件容易的工作。
我为教育目的创建了一个简单的MVC框架。
查看index.php文件,你就会知道我说的路由器和控制器是什么意思。我不认为MVC的目的是将HTML放在控制器中,如果我是你,我会发回一些数据,并根据发送数据在我的视图中做一个if-else语句。要充分利用MVC,您首先需要了解它是什么或做什么,因此我建议您搜索教程。@daanoops。不确定我是怎么弄错的。这是一个演示文稿特定的用户可见字符串,它显然属于视图中的某个地方。@deceze我对MVC-OP没有太多经验。是的,显然……感谢您的反馈。我已经在我的应用程序中实现了一个基本的路由器,它正在工作,我只是没有提供代码,因为它听起来不必要。我已经阅读了一些教程,尤其是PHP教程,但我不喜欢这些教程,我已经有了一个非MVC库,我宁愿尝试转换,也不愿重写。
public function buildLoggedInMessage() {
if ($this->User->isLoggedIn()) {
return ' You are logged in as <strong>'.$this->User->getUsername().'</strong> (<a href="/logout.php">logout</a>)';
} else {
return ' <a href="/login.php">Login</a>';
}
}
class Member{
public function check() {
if ($this->User->isLoggedIn()) {
echo ' You are logged in as <strong>'.$this->User->getUsername().'</strong> (<a href="/logout.php">logout</a>)';
} else {
echo ' <a href="/login.php">Login</a>';
}
}
}
$url_segments = explode('/', $_SERVER['REQUEST_URI']);
if (count($url_segments) == 4){
$controller_name = $url_segments[2];
$method_name = $url_segments[3];
}
else if (count($url_segments) == 3){
$controller_name = $url_segments[2];
$method_name = $this->default_method;
}
else if (count($url_segments) == 2){
$controller_name = $this->default_controller;
$method_name = $this->default_method;
}
$this->current_controller = $controller_name;
$this->current_method = $method_name;
require BASEPATH . '/controller/' . $controller_name . '.php';
$class_name = ucfirst($controller_name);
$controller = new $class_name($method_name);
call_user_func( array( $controller, $method_name ) );