2009-10-16 125 views
1

如果我可以要求答案不要指向框架或其他库,我将不胜感激。我意识到这些,并且是在基于快速小黑客经验的更多答案之后。混合使用PHP和html

开始与一些基本的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()函数将要吐在\ T的所有的地方,或者空间,这取决于你的编辑器,这将会使渲染输出一个烂摊子。

有此选项:

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。我理解这些方法,但同样,我正在寻找最好的建议,希望为那些永远不会热衷于编程的人提供一些工具,并且希望能够帮助他们提高工作效率。

+1

目前尚不清楚你的问题*是*。关于HTML源代码缩进的一点是有点意思,因为HTML并不关心这一点。 – pavium 2009-10-16 08:06:51

+1

这里有什么问题吗?或者这只是一个错误的博客文章? – cletus 2009-10-16 08:12:42

+0

这是一个很大的写作本质上要问“我如何输出漂亮的HTML代码?” – dnagirl 2009-10-16 18:33:30

回答

6

忘记编写PHP时HTML输出的缩进。否则,你会花费太多时间来担心完全无关紧要的事情。

如果您需要清理HTML输出以方便设计人员阅读,请通过Tidy运行。如果这看起来效率低下,记住你只需要在开发中做到这一点,而不是在生产中。

1

当你的代码变得更复杂,您的设计更复杂,我想你会发现,模板就是答案。最后,演示文稿应该与逻辑分开,这是MVC模型的核心。

我个人很喜欢Smarty

+0

我不知道我有多少可以得到他们使用的子语言的语法。它闻起来很像标签冷聚变时代的东西。我需要更详细的研究 这可能是错误的,但考虑聪明是如何工作的,必须有很多人听到它。我相信它是非常缓存驱动的,但对于那些无法从缓存中读取的页面,本质上来说,有一船发现并替换了正在发生的事情,我敢打赌这些都是非常正规的驱动,所有昂贵的东西。 再次感谢您的建议,我确实会给它一个坚实的阅读,看看我想出了什么。 – user170579 2009-10-16 20:18:24

1

我想你应该你所厌恶重新评估到最后一个片段。 PHP作为一种模板语言是最好的。当您以这种方式使用它时,您可以轻松进行设计模型并将其转换为动态页面。你也可以使用标准的HTML工具,看看ZenCoding作为我正在谈论的一个例子。您可以有适当的语法突出显示和所有其他的好东西。你也可以轻松地维持一些缩进和一致性的表面,而不需要任何额外的努力。

现在我明白了由于事情变得凌乱和丑陋而感到的紧张感。关键是将复杂的逻辑从模板中移出到单独的纯PHP文件中,以便模板文件比PHP更像HTML。 iddqd建议使用Smarty作为模板语言,但我从来不喜欢Smarty。我相信它最终只是一个毫无意义的重定向而不是有用的抽象。

在所有的编程语言中,PHP是最好的模板语言之一。没有必要颠覆它像任何其他编程语言。

+0

谢谢先生。我想我将不得不习惯最后一个片段。我在wordpress模板中看到了很多。我很想将代码逻辑与HTML表示完全分开,并且你很可能是对的,使用<?php foreach ...?>是一种很好的方式。 我认为我最大的问题是看到,那只是杀了我:)我会看看zencoding的东西,我会再次看看Smarty,虽然我最后一次看它,但我非常感觉同样的方式如你所做的那样。再次感谢你。 – user170579 2009-10-16 20:13:33