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