PHP和HTML代码现在都在我的应用程序中搞乱了。我该怎么办?像模板引擎的东西?我想自己编程。学习PHP是有目的的。
答案 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。
指定视图和控制器显示和/或处理的数据。
这是您的实际HTML,唯一的PHP是用控制器提供的数据替换自己的代码。
处理浏览器的请求,从模型中提取数据并将其传递给视图。
<?php
function post_with_id($id) {
$post = array();
$post["id"] = $id;
$post["title"] = "Sample post " . $id;
return $post;
}
<?php
require_once('models/post.php');
$post = post_with_id((int)$_GET["id"]);
include('views/post.php');
<h1><?php echo $post["title"]; ?></h1>
这确实可以保持您的代码清洁。只需更改模型以从数据库或文件中获取其他数据,例如,您就拥有了动态内容!
这只是MVC的一个非常简单的例子。查看维基百科关于它的文章。玩得开心!
答案 2 :(得分:1)
使用MVC - 模型,视图,控制器。模型包含应用程序逻辑和数据库访问以及整体数据处理。视图包含HTML代码,就像模板一样。控制器是用户访问的URL,包括用于检索/设置数据的模型以及用于显示数据的视图。
也许看看一些使用MVC的应用程序,看看它们是如何构建的。
答案 3 :(得分:1)
将表示(HTML)与逻辑(PHP)分开的最简单,最快速的方法是使用Smarty Templating Engine。这是运行混合文件(逻辑和演示文稿混合在一起)和fuill MVC解决方案之间的半步。但我认为,如果你想要走上正轨那么就这么容易。