我应该使用什么架构来编写我的第一个PHP动态网站?

时间:2011-04-06 08:22:59

标签: php html web dynamic-websites

我只是想建立我的第一个动态网站。我想使用PHP,MYSQL,AJAX,HTML,CSS

我有一些初学者问题:

  • 标题和导航栏是否应在header.php中排除并使用echo打印出来?

  • 设计标签应该在php中回显(例如:<a>1 Test test</a>)或仅返回数据

  • 制作动态网站有很好的例子吗?

我的主要问题是我不知道如何制作清晰的结构。在哪里做出正确的设计(在php中打印出来?)

9 个答案:

答案 0 :(得分:5)

如果它真的是你的第一个网站,我实际上建议在框架方面不使用任何东西。这样您就可以花些时间熟悉HTML / CSS,SQL和PHP,而无需使用MVC(模型/视图/控制器)等高级原则。我最担心的是,立即从框架开始会使学习曲线变得陡峭,并且会跳过诸如熟悉您将要使用的编程语言之类的事情。

你最终会弄得一团糟,但这只会让你更加欣赏框架;然后,您可以转换为使用CodeIgniterSymfonyCakePHP等框架(或其他框架,因为还有更多的框架)。

我真正喜欢的其他框架是Play!用于Java,用于Ruby的Rails。既然你说你是初学者,你也可以考虑这些。

答案 1 :(得分:2)

好吧,马上回答你的所有问题。 您需要的唯一技术是模板。

模板是典型的PHP脚本,但主要由纯HTML组成,只有一些PHP代码才能显示动态生成的数据。

创建主网站模板包含标题和导航栏和页脚,除了实际页面内容之外的所有其他内容。

然后创建单独的页面(您网站的“部分”:news.php,links.php等) 但是制作每一页的两部分:获取数据部分和显示数据部分 在获取数据时,不应打印出单个字符 如果发生某些错误,请显示错误页面 一旦获得所有数据而没有错误 - 是时候包含一个主模板了。

典型的脚本可能看起来像

<?
//include our settings, connect to database etc.
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php';
//getting required data
$DATA=dbgetarr("SELECT * FROM links");
// setting title for using in the main template
$pagetitle = "Links to friend sites";
//etc
//set page template filename
$tpl = "links.tpl.php";
//and then finally call a template:
include "main.tpl.php";
?>

其中main.tpl.php是您的主要网站模板,包括常见部分,如页眉,页脚,菜单等:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My site. <?=$pagetitle?></title>
</head>
<body>
<div id="page">
<? include $tpl ?>
</div>
</body>
</html>

links.tpl.php是实际的页面模板:

<h2><?=$pagetitle?></h2>
<ul>
<? foreach($DATA as $row): ?>
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
<? endforeach ?>
<ul>

最终,您可能会遇到更复杂的设计,例如前置控制器,但对于第一个站点,这个设计既简单又强大。

答案 2 :(得分:2)

  • 是的,我建议您从其他文件中包含标题和导航栏脚本..您可以在其中独立维护它们。我认为这非常重要。
  • 我建议你回复/打印来自php的html,而不是将php插入html(在解析$ _GET / $ _ POST等事情时更容易)

我建议您创建一个模板,另一个脚本具有打印(或回显)html标签,页眉,页脚,标题栏,导航栏等功能。只需包含带有功能的脚本,所有页面都可以包含以下结构:

<?php
  include 'html_display_functions.php';

  /* put lines here to parse $_GET and $_POST, session_start()/$_SESSION,etc
     if needed */

  print_html_pre_content();
  print '<p>Hello, world! or other content.</p>';
  print_html_post_content();
?>

我发现这很干净,当你弄乱$ _GET,$ _POST和$ _SESSION等时很容易添加功能。

答案 3 :(得分:1)

我建议使用一些模板系统(Smarty会很好)。 乍看之下,在哪里放置标题和导航栏并不重要。您何时需要排除导航栏并单独存储?当您希望能够包含不同的导航时。您网站不同部分的酒吧。

例如,我有一个包含多个子域名的网站:about.website.dev,special.website.dev,比方说,terms.website.dev

在about.website.dev我的导航栏的条目是:“我是谁”,“我该怎么做”,“我有多酷”; at special.website.dev:“商品”,“解决方案”,“提示”等。

您的导航栏的模板是相同的:只是循环所有条目,但内容不同。在这种情况下,您将导航栏与标题分开。如果您不使用模板,您只需创建三个文件(在本例中):about.nav.php,special.nav.php和terms.nav.php然后您只需包含相应的导航栏。

如果你的导航。 bar在您的网站上无处不在,您可以将其存储在header.php中。一旦你需要分开,这并不困难,但我仍然建议使用模板,只是为了习惯“适当的网站开发”。

看看Smarty或Savant等不同的模板系统。我个人而言,就像Django(python)模板系统一样。并习惯于分离您的视图和业务逻辑。

答案 4 :(得分:0)

恕我直言,你最好看一下基于php的web应用程序框架。例如http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#PHP

列表

尽管预先学习(框架以及php)可能要多一些,但它们都具有足够的结构来开发动态网站。找一个足够轻的并且有很好的教程,你会发现自己一直在学习php语言。我相信这比在开始阶段使用原始php更容易。

当您了解更多信息时,您可以根据自己的需要或编码风格判断您喜欢哪些框架,甚至可以恢复原始php。

答案 5 :(得分:0)

如果你想要一本关于这个主题的好书,试试

你所问的几乎是品味问题。您的应用程序越复杂,在精心设计和可维护的结构中应该做的工作就越多。

我的观点是:首先学习基础知识然后再看框架。如果您了解幕后发生的事情,它会让您更容易。

答案 6 :(得分:0)

尝试使用Agile Toolkit,这可能是最简单的PHP UI框架,可以开始使用专为Web软件设计。

你会跨过很多问题。 http://agiletoolkit.org

根据框架/普通PHP的选择,您应该根据他们的实践来做。例如,在Agile Toolkit中,您使用模板,因此您将页眉和页脚放入templates / jui / shared.html文件中。它在第一次截屏视频中进行了解释。

如果你重新发明轮子并继续使用普通的PHP,那么你应该做得更好include 'header.php';。良好的框架让您无法了解Web软件的内部工作原理。糟糕的框架无论如何都需要你了解一切。

答案 7 :(得分:0)

这里有很多好的答案 - 但只是添加......

将功能拆分为单独的包含文件 - 并使用一致的方式查找这些文件。

找到一个好的PHP编码风格并坚持下去。例如hordePEAR

不要在包含文件中内联执行代码或HTML - 它只应在您从控制脚本中专门调用它时执行某些操作。

如果要包含生成HTML的文件,请确保它们提供关闭所打开的任何标记的功能。即不只是'header.php'

由于不应在HTML文档的HEAD之外直接声明CSS和Javascript文件,请查看调用的功能可以将这些文件添加到现有HTML文档中的方法 - 一个显而易见的解决方案是使用结合输出缓冲的模板系统但是你也可以使用javascript将更多的JS和CSS文件注入文档后面的HEAD部分。

答案 8 :(得分:-1)

使用MVC - http://www.yiiframework.com/doc/guide/1.1/en/basics.mvc 请参阅Yii-framework http://yiiframework.com,它有您所需要的一切:)