如何在 PHP 中创建自定义模板系统

发布于 2024-09-13 19:50:13 字数 175 浏览 6 评论 0原文

我想在我的 php 应用程序中使用自定义模板系统,

我想要的是我想让我的 php 代码远离设计,我想使用 tpl 文件进行设计,并使用 php 文件来处理

我不想使用的 php 代码任何现成的女仆脚本。任何人都可以指出一些链接链接或有用的信息如何构建 php 模板系统来实现这一目标

谢谢

I want to use a custom template system in my php application,

What I want is I want to keep away my php codes from design, I would like to use a tpl file for designs and a php file for php codes

I dont want to use any ready maid scripts. Can any one point out some links link or useful info how to build a php templating system to achieve this

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

゛清羽墨安 2024-09-20 19:50:14

我这样做的方法是创建一个模板文件(.tpl,如果你愿意的话)并插入将被 PHP 中的 str_replace 替换的标记。代码将如下所示:

对于 template.tpl 文件

<body>
  <b>Something: </b> <!-- marker -->
</body>

对于 PHP

$template = file_get_contents('template.tpl');
$some_data = 'Some Text'; //could be anything as long as the data is in a variable
$template = str_replace('<!-- marker -->', $some_data, $template);
echo $template;

简而言之,这就是它,但它可能会变得更加复杂。标记可以是任何东西,只要它是唯一的即可。

The way I do it is to create a template file(.tpl if you wish) and insert markers which will be replaced with str_replace in PHP. The code will look something like this:

For template.tpl file

<body>
  <b>Something: </b> <!-- marker -->
</body>

For the PHP

$template = file_get_contents('template.tpl');
$some_data = 'Some Text'; //could be anything as long as the data is in a variable
$template = str_replace('<!-- marker -->', $some_data, $template);
echo $template;

That's it in a nutshell but it can get a lot more complex. The marker can be anything as long as it's unique.

人间不值得 2024-09-20 19:50:14

我想让我的 php 代码远离设计,我想使用 tpl 文件进行设计

...并将您的 tpl 代码与“设计”混合!
那有什么区别呢? :)

PHP 本身就是高效的模板系统。
如今,大多数开发人员都认为将 PHP 代码划分为业务逻辑部分和显示逻辑部分是最好的方式。
当然,它可能是 PHP 的非常有限的子集。您将需要一个输出运算符 (),一个条件 ...,循环... 并包含。

此类模板的示例:

<table>
<? foreach ($data as $row): ?> 
  <tr>
    <td><b><?=$row['name'] ?></td>
    <td><?=$row['date'] ?></td>
  </tr>
  <tr>
    <td colspan=2><?=$row['body'] ?></td>
  </tr>
  <? if ($row['answer']): ?>
  <tr>
    <td colspan=2 valign="top">
      <table>
        <tr>
          <td valign="top"><b>Answer: </b></td>
          <td><?=$row['answer'] ?></td>
        </tr>
      </table>
    </td>
  </tr>
  <? endif ?>
  <? if($admin): ?>
  <tr>
    <td colspan=2>
  <? if($row['del']): ?>
      <a href="/gb/?action=undelete&id=<?=$row['id']?>">show</a>
  <? else: ?>
      <a href="/gb/?action=delete&id=<?=$row['id']?>">hide</a>
  <? endif ?>
      <a href="/gb/?action=edit&id=<?=$row['id']?>">edit</a>
    </td>
  </tr>
  <? endif ?>
<? endforeach ?>
</table>

I want to keep away my php codes from design, I would like to use a tpl file for designs

...and mix your tpl codes with "design"!
what's the difference then? :)

PHP itself is efficient templating system.
And nowadays most developers agreed that dividing your PHP code to business logic part and display logic part is most preferable way.
It can be very limited subset of PHP of course. You will need an output operator (<?=$var?>) one, a condition <? if(): ?>...<? endif ?>, a loop <? foreach(): ?>...<? endforeach ?> and include.

An example of such a template:

<table>
<? foreach ($data as $row): ?> 
  <tr>
    <td><b><?=$row['name'] ?></td>
    <td><?=$row['date'] ?></td>
  </tr>
  <tr>
    <td colspan=2><?=$row['body'] ?></td>
  </tr>
  <? if ($row['answer']): ?>
  <tr>
    <td colspan=2 valign="top">
      <table>
        <tr>
          <td valign="top"><b>Answer: </b></td>
          <td><?=$row['answer'] ?></td>
        </tr>
      </table>
    </td>
  </tr>
  <? endif ?>
  <? if($admin): ?>
  <tr>
    <td colspan=2>
  <? if($row['del']): ?>
      <a href="/gb/?action=undelete&id=<?=$row['id']?>">show</a>
  <? else: ?>
      <a href="/gb/?action=delete&id=<?=$row['id']?>">hide</a>
  <? endif ?>
      <a href="/gb/?action=edit&id=<?=$row['id']?>">edit</a>
    </td>
  </tr>
  <? endif ?>
<? endforeach ?>
</table>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文