将php与html分开

时间:2014-08-24 13:32:26

标签: php

我正在使用php构建一个网站。我想将PHP与html分开。 Smarty引擎,我想这样做,但现在它对我来说太复杂了。寻找快速修复和易于学习的解决方案,这也是一个公认的标准。任何人都在帮忙。

6 个答案:

答案 0 :(得分:1)

考虑框架或选择模板引擎

答案 1 :(得分:0)

使用框架。根据您的项目,可以使用像Slim这样的微框架,也可以像Laravel那样更完整。

答案 2 :(得分:0)

在编写具有相当多PHP代码的复杂系统时,我有时会按以下方式将其分开(不知道您的确切项目,但它可能对您有用):

您创建一个包含所需功能和变量的php文件。然后,使用.htaccess通过index.php文件加载每个wepgage(这样用户实际上总是使用查询字符串加载index.php)。现在,您可以使用file_get_contents(或类似的)将html页面加载到变量中(我现在称之为$ body);可以使用preg_replace修改此变量。

示例:在html文件中,您编写{title}而不是<title>Sometext</title> 替换用您实际需要的代码替换{title}

$body = str_replace('{title}', $title, $body);

完成所有替换后,只需回显$body ...

答案 3 :(得分:0)

只需声明许多变量并在模板中使用它们:

在您的申请中:

function renderUserInformation($user)
{
  $userName = $user->userName;
  $userFullName = $user->fullName;
  $userAge = $user->age;

  include 'user.tpl.php';
}

在user.tpl.php中:

User name: <?=$username?><br>
Full name: <?=userFullName?><br>
Age: <?=$userAge?>

通过将其置于函数中,可以限制变量的范围,因此不会污染全局范围和/或意外覆盖现有变量。 这样,您可以“准备”显示所需的信息,并在单独的php文件中,您只需要输出这些变量。

当然,如果必须,您仍然可以向模板添加更复杂的PHP代码,但尽可能少地尝试。

将来,您可以将此“渲染”功能移动到单独的类中。在某种程度上,这个类是一个视图(在这种情况下是一个用户视图),它是创建MVC结构的一个步骤。 (但现在不要担心。)

答案 4 :(得分:0)

寻找快速解决方案和易于学习的解决方案

方法1 (最懒的;但你保留了像记事本++这样的编辑器上的突出显示)

<?php
   // my php
   echo "foo";
   $a = 4;
   // now close the php tag -temporary- 
   // to render some html in the laziest of ways
?>

<!-- my html -->
<div></div>

<?php
   // continue my php code

方法2 (更有条理;在您传递一些值后使用模板文件)

<?php
   // my php
   $var1 = "foo";
   $title = "bar";
   $v = array("var1"=>"foo","title"=>"bar");   // preferrable
   include("template.php");
?>

的template.php

<?php
   // $var1, $var2 are known, also the array.
?>

<div>
 <span> <?php echo $v["title"]; ?> </span>
</div>

就个人而言,我更喜欢方法2 并在我自己的CMS中使用它,它使用了大量的模板和数据数组。

另一种解决方案当然是高级模板引擎,如 Smarty,PHPTemplate 等。你需要花很多时间来学习它们,而且我个人不喜欢他们的方法(新语言风格)

答案 5 :(得分:-2)

function renderUserInformation($user)
{
  $userName = $user->userName;
  $userFullName = $user->fullName;
  $userAge = $user->age;

  include 'user.tpl.php';
}