PHP中MVC方法的Hello World示例

15

有人能够提供一个使用MVC方法编写PHP Hello World的非常简单的示例吗?


1
MVC不是用于“hello world”示例的模式。它是在遵循面向对象编程原则的应用程序变得过于复杂并需要施加额外限制以赋予其可控结构时使用的。 - tereško
2
你为什么要关闭那种类型的问题? - user3671029
在 https://dev59.com/GkrSa4cB1Zd3GeqPavic#4925159 上有一个详细的答案。 - Patrick Allaert
3个回答

34

这里有一些“Hello, World”MVC示例:

模型

function get_users() {
    return array(
        'Foo',
        'Bar',
        'Baz',
    );
}

视图

function users_template($users) {
    $html = '<ul>';

    foreach ($users as $user) {
        $html .= "<li>$user</li>";
    }

    $html .= '</ul>';

    return $html;
}

控制器

function list_users() {
    $users = get_users();

    echo users_template($users);
}

主要思想是将数据访问(模型)与数据呈现(视图)分开。控制器只需负责将两者连接起来,不做其他工作。


8
为什么视图由这么多 PHP 和很少的 XHTML 组成? - markus
3
@Natrium,有什么建设性的评论吗? - Ionuț G. Stan
4
@tharkun,这么多PHP?只是一个for循环和一些连接。我不想引入基于PHP的模板系统。我想要一个明确、清晰的关注点分离示例。在我看来,太多的标记会产生无用的噪音。 - Ionuț G. Stan
1
这篇文章太棒了!现在我对MVC有更深入的了解! - 尤川豪
很好的例子,但是“视图除了if else或foreach之外,不应该包含任何逻辑”。我可以复制它。 - Sliq

11

以下是最基本的示例。您的index.php文件作为控制器,从模型获取一些数据,然后通过视图文件包含HTML。

/* index.php?section=articles&id=3 */

// includes functions for getting data from database
include 'model.php';

$section = $_GET['section'];
$id = $_GET['id'];

switch ( $section )
{
    case 'articles':
        $article = getArticle( $id );
        include 'article.view.php';
}

.

/* article.view.php */

<html>
<head>
<title><?=$article['title']?></title>
</head>

<body>

<h1><?=$article['title']?></h1>
<p><?=$article['intro']?></p>
<?=$article['content']?>

</body>
</html>

6
Zend Framework快速入门是一个不错的“简单应用”示例(不是一个“Hello World”,但也不需要太多--使用MVC框架实现一个“Hello World”有点像用核弹来杀一只虫子),基于Zend Framework并使用MVC框架。如果想要更深入了解,可以看看电子书Survive The Deep End!,虽然还在进展中,但仍是有趣的阅读材料。这是关于ZF的,我想你也可以在其他MVC框架上找到类似的东西,比如Symfony或CakePHP。

我相信他没有客户要求一个“Hello, World”应用程序。 - Ionuț G. Stan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接