现在它是一团糟(PHP和HTML)

时间:2010-12-25 01:36:42

标签: php templates

PHP和HTML代码现在都在我的应用程序中搞乱了。我该怎么办?像模板引擎的东西?我想自己编程。学习PHP是有目的的。

4 个答案:

答案 0 :(得分:3)

这是我的视图渲染功能。

<?php defined('APPPATH') or die('no direct script access');

class ViewFileMissing extends Exception {}

function renderView($viewname, $data)
{
    $filename = APPPATH.'/views/'.$viewname.'.php';
    if (!file_exists($filename))
    {
        throw new ViewFileMissing($viewfile);
    }

    extract($data, EXTR_SKIP);
    ob_start();         
    require($filename);
    return ob_get_clean();
}

它可以与

这样的模板一起使用
<html>
    <head>
        <title><?php echo $title ?></title>
    </head>
    <body>
         <p><?php echo $paragraph; ?></p>
    </body>
</html>

然后可以像

一样调用它
$data = array('title' => 'This is a title', 'paragraph' => 'This is a paragraph')
$html = renderView('viewname', $data)

它的工作原理是为数据数组的每个元素创建一个局部变量,打开输出缓冲,需要模板文件,它将所有html输出到缓冲区,然后清除缓冲区并返回输出。因此,所有渲染的html现在都在一个可以回显的字符串中。

html就是例如,它不会验证。另请注意,这是extract唯一合法使用曾经看到的。

答案 1 :(得分:2)

你可以使用MVC。

M - 模型

指定视图和控制器显示和/或处理的数据。

V - 视图

这是您的实际HTML,唯一的PHP是用控制器提供的数据替换自己的代码。

C - 控制器

处理浏览器的请求,从模型中提取数据并将其传递给视图。


实施例

models / post.php - 模型 - 博客文章(虚拟数据返回,你可以使用数据库,网络服务,等等)

<?php
function post_with_id($id) {
  $post = array();
  $post["id"] = $id;
  $post["title"] = "Sample post " . $id;
  return $post;
}

post.php - controller - 处理请求,导航到例如/post.php?id=3

<?php
require_once('models/post.php');
$post = post_with_id((int)$_GET["id"]);
include('views/post.php');

的观点/ post.php中

<h1><?php echo $post["title"]; ?></h1>

这确实可以保持您的代码清洁。只需更改模型以从数据库或文件中获取其他数据,例如,您就拥有了动态内容!

这只是MVC的一个非常简单的例子。查看维基百科关于它的文章。玩得开心!

答案 2 :(得分:1)

使用MVC - 模型,视图,控制器。模型包含应用程序逻辑和数据库访问以及整体数据处理。视图包含HTML代码,就像模板一样。控制器是用户访问的URL,包括用于检索/设置数据的模型以及用于显示数据的视图。

也许看看一些使用MVC的应用程序,看看它们是如何构建的。

答案 3 :(得分:1)

将表示(HTML)与逻辑(PHP)分开的最简单,最快速的方法是使用Smarty Templating Engine。这是运行混合文件(逻辑和演示文稿混合在一起)和fuill MVC解决方案之间的半步。但我认为,如果你想要走上正轨那么就这​​么容易。