如果我可以要求答案不要指向框架或其他图书馆,我将不胜感激。我知道这些,并且根据快速小黑客的经验更多地回答。
从一些基础html开始
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Page Title</title>
</head>
<body>
// something is going to happen here, could be more html, or php
</body>
</html>
假设您将拥有数百页,当然,您希望以较少的代码重复方式对其进行模块化。
我已经看过,使用过并且辩论了许多策略。
基本包括方法:
的header.inc.php
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Page Title</title>
</head>
<body>
footer.inc.php
</body>
</html>
所有数百个php页面的存根:
<?php include 'header.inc.php'; ?>
// html or other php can go here
<?php include 'footer.inc.php'; ?>
获得更多花哨,并且有一个var.inc.php,你可以设置$ page_title并将其放在第一个包含前面,从而节省编辑数百页的时间。
函数方法:
show.inc.php
function display_header($page_title) {
echo "
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>$page_title</title>
</head>
<body>";
}
你对页脚做同样的事情,我怀疑你明白了。我知道你们当时很多人都在考虑对象,我也想避免讨论这个问题。
考虑一下你正试图教一个非常小的孩子一些原则,或者你试图让一个设计师进入某种形式的现代时代。
哪种方法,你开始遇到你要在浏览器中查看html和php输出的情况。浏览器的源输出有一个非常清晰的选项卡缩进和结构。大多数时候,看一下网站的来源,我看到html非常糟糕。所有一行,或不同形式的缩进。
如何以简单的方式解决这个问题?
这个display_header()函数会在整个地方或空格中吐出,这取决于你的编辑器,它会使渲染的输出变得一团糟。
有这个选项:
function display_header($page_title) {
echo '<html>';
echo '<head>';
echo "\t" . '<meta http-equiv="Content-type" content="text/html; charset=utf-8" />';
echo "\t" . '<title>' . $page_title . '</title>';
echo '</head>';
echo '<body>';
}
然后,你会遇到以下情况:
echo '<table>';
foreach ($variable as $item) {
echo '<tr><td>' . $item . '</td></tr>';
}
echo '<table>';
与
echo "\t" . '<table>' . "\n";
foreach ($variable as $item) {
echo "\t\t". '<tr><td>' . $item . '</td></tr>' . "\n";
}
echo "\t" . '<table>' . "\n";
现在,你刚刚把你的php搞得一团糟。所以我开始考虑输出缓冲区,并且我将完全让设计师对这个概念感到不满。但我只是将更多的html与php混合在一起,我很自豪。
老实说,我从来没有能够解决这个问题:
<?php foreach ($variable as $item) { ?>
....
<?php } ?>
两者都会产生更好的生成html,但对我来说,它也会产生更复杂的php文件。非常基本的问题,我相信会有一些强烈的意见,并希望推动框架和OOP。我理解这些方法,但同样,我正在寻找最佳建议,为那些永远不会对编程充满热情的人提供一些工具,并且只是希望以有助于提高效率的方式完成工作。
答案 0 :(得分:6)
在编写PHP时忘掉HTML输出的缩进。否则你会花费太多时间来担心一些完全无足轻重的事情。
如果您需要清理HTML输出以使设计人员更容易阅读,请通过Tidy运行它。如果这看起来效率低下,请记住,您只需要在开发中进行此操作,而不是在生产中。
答案 1 :(得分:1)
如果您在查看源代码时真正关心HTML布局,那么可以查看PHP Tidy,如果您构建HTML,则可以使用各种选项(如缩进和许多其他配置)输出它。
答案 2 :(得分:1)
随着您的代码越来越复杂,您的设计越来越复杂,我想您会发现模板就是答案。最后,演示应该与逻辑分开,这是MVC模型的核心。
我个人喜欢Smarty
答案 3 :(得分:1)
我认为你应该重新评估你对最后一段片段的厌恶。 PHP是最好的模板语言。当您以这种方式使用它时,您可以轻松地获取设计模型并转换为动态页面。您也可以使用标准的HTML工具,查看ZenCoding以获取我正在谈论的内容的示例。您可以使用正确的语法突出显示和所有其他好东西。你也可以毫不费力地保持一些缩进和一致性的外观。
现在我理解你因为变得凌乱和丑陋而感到紧张。关键是将复杂逻辑从模板中移出到单独的纯PHP文件中,以使模板文件感觉更像HTML而不是PHP。 iddqd建议使用Smarty作为模板语言,但我从未喜欢过Smarty。我相信它最终只是一个毫无意义的重定向而不是一个有用的抽象。
在所有编程语言中,PHP是最好的模板语言之一。没有必要将其颠覆为任何其他编程语言。