0

当我在玩 Joomla 时!源代码,我看到了这样的代码(或类似的代码,我不太确定,因为那是一段时间):

<juc:place name="module" some-other-attributes/>

我并不是说它与上面的完全一样,但当我看到类似 Asp.NET 的自定义标签时,我真的很惊讶:

<asp:Label ID="lblLabel" runat="server"/>

我现在想知道如何像在 Asp.NET 中那样在 PHP 中完成相同或类似的事情。是否有任何此类框架的库?

我是否需要编写一个解析器来解析我的 php 代码并搜索这些标签并将它们替换为对应的内容,例如 Asp.NET 替换<asp:Label/><span/>

我的个人喜好:

我喜欢 Asp.NET 通过将代码隐藏与设计视图或 html 与 c# 代码分离所做的事情。并且使用 asp.net 的服务器端控件使开发人员可以轻松地从代码隐藏访问 html 控件。这听起来像是关注点分离,我想知道是否有任何项目或方式已经做了同样的事情?

4

3 回答 3

1

或者,您可以使用 MVC 框架(Zend 框架、Codeigniter 或类似框架),它为您做了很多关注点分离。

正如所建议的那样,SMARTY 是一个模板引擎,它几乎可以满足您的需求,但这只是难题的一部分。抽象您的数据访问层也是一个好主意。

您还可以在服务器配置上启用短标签,然后您甚至可以使用类似...

<html>
    <head>
    ...
    </head>
    <body>
        <?= "Hello, world!" ?>
    </body>
</html>
于 2011-11-24T05:39:41.410 回答
1

如果您使用一种方法,其中表示层与执行逻辑分开存储(例如,模板引擎),那么创建一个在 HTML 中查找特定代码并将其替换为其他内容的解析器非常容易。您可以制作自己的“SMARTY”语言。

但是,如果您的代码只是没有层分离的“可执行 PHP”,则不能进行此类替换(因为它是由 PHP 脚本引擎直接执行的)。通过“可执行的 php”,我的意思是这样的:

<html>
  <head>
  ...
  </head>
  <body>
  <?php echo "Hello world"?>
  </body>
 </html>
于 2011-11-24T05:32:33.710 回答
0

你可以试试SimpleHTMLDOM。然后你可以运行类似...

$html = new simple_html_dom();
$html->load_file(fileToParse.html');
foreach($html->find('tagToFind') as $element){
    $element->tag='span';
}

那应该行得通。

您可能想看看为 cms 创建自定义 html 标签

于 2012-06-10T18:27:47.723 回答