在我的MVC PHP应用程序中,我把这个构建函数放在哪里?

在我的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>'

我正在尝试将我的PHP应用程序转换成更多的MVC应用程序。我对MVC没有太多的经验,也不完全理解其中的一些/所有概念,也不完全理解如何使用PHP,因此我需要一些帮助来理解特定函数的用途

此函数根据用户是否登录返回一些HTML

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 ) );