php - 如何不将表示与逻辑混在一起?

标签 php

我经常使用 PHP,每当我在某个论坛上看到“讨厌 PHP”的帖子,甚至在这里看到流行的 PHP 相关讨论时,我通常会看到类似以下内容的内容:

PHP is too messy/sloppy/crappy, because you have a tangled web of presentation and logic.

然后我看到 PHP-Defenders 对上述某些版本的回复说这不一定是真的。我开始思考“这怎么可能……?”和“什么才算混合了表达和逻辑?”我想不通,所以现在我来了。

以下哪项是最佳做法?还是有我不知道的更好的方法?

<?php
    if(!function()) {
        echo '<div id="results">The result is a lie.</div>';
        }
?>

或者

<div id="results">
    <?php
        if(!function()) {
            echo 'The result is a lie.';
            }
    ?>
</div>

我知道上面的例子看起来没什么大不了的,但是在浏览了我的网络应用程序之后,我意识到它有点乱(因为我混合了 HTML 和 PHP),所以我希望有是一个很好的开发方式,同时保持事物的整洁。

最佳答案

也许你想看看模板引擎,比如 smarty。这可以为您将其分开。

链接:http://www.smarty.net/

一些(希望是平衡的)补充见下面相当大的评论部分:

关于smarty的讨论似乎很多。据我所知,这里还有两个额外的营地,

有人说:模板引擎,好的,但 smarty 不是最好的;使用(在此处插入您的选择)。 例如:twig 或 dwoo。

另一个说:不要使用单独的模板引擎!因为 PHP 完全有能力自己做这件事。评论中的示例包括:

Use Zend_View and Savant

关于php - 如何不将表示与逻辑混在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4740459/

相关文章:

php - webmin php-lib.pl 修改

php - 在不丢失图形形状的情况下减少图形数据

php - 如何将此 javascript 函数转换为 PHP?

php - mysql插入日期时间不输出正确的时间

php - 如何在 Laravel 5.2 中将 taskId 插入到文件表中

php - MySQL 根据具有自定义日期格式的日期和 MySQL 条件(例如传递日期的事件)获取事件的问题

php - 如何从 MySQL 数据库打印 BLOB 文档

javascript - 我如何将 Angular JS 构建的表单提交到电子邮件地址

php - 将 PHP 参数传递到 NetBeans 到具有 symfony url-routing 功能的页面中

php - 邮件()与PHP