我正在使用php建立一个网站。我想从html中分离php。聪明的引擎,我想可以做到,但是现在对我来说太复杂了。寻找一个快速修复和易于学习的解决方案,这也是一个公认的标准。谁来帮忙?
考虑框架或选择模板引擎
使用框架。根据你的项目,你可以选择像Slim这样的微框架,或者像Laravel这样更完整的框架。
当我编写包含大量php代码的复杂系统时,我有时会这样做(不知道您的确切项目,但它可能适合您):
创建一个php文件,其中包含所有需要的函数和变量。然后,使用.htaccess通过index.php文件加载每个页面(这样用户实际上总是使用查询字符串加载index.php)。现在,您可以使用file_get_contents(或类似的)将html页面加载到一个变量中(我现在将其称为$body);可以使用preg_replace修改该变量。
例如:在html文件中,将<title>Sometext</title>
写成{title}
替换用您实际需要的代码替换{title}
:
$body = str_replace('{title}', $title, $body);
当所有替换完成后,只需回显$body
…
只需声明大量变量并在模板中使用它们:
在你的应用程序中:
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代码,但要尽量少这样做。
将来,你可能会把这个'render'函数移动到一个单独的类中。在某种程度上,这个类是一个视图(在本例中是一个用户视图),它是创建MVC结构的一个步骤。(但现在不用担心这个)
寻找快速修复和易于学习的解决方案
METHOD 1(最懒;然而,你仍然保留突出显示编辑器,如notepad++)
<?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
METHOD 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等。你需要很多时间来学习它们,我个人不喜欢他们的方法(新的语言风格)function renderUserInformation($user)
{
$userName = $user->userName;
$userFullName = $user->fullName;
$userAge = $user->age;
include 'user.tpl.php';
}