当我和Joomla一起玩的时候!源代码,我看到了诸如代码(或类似于这个,我不太确定,因为它已经有一段时间了):
<juc:place name="module" some-other-attributes/>
我不是说它与上面的那个完全一样,但实际上当我看到类似Asp.NET的自定义标签时,我感到很惊讶:
<asp:Label ID="lblLabel" runat="server"/>
我现在想知道如何在PHP中完成相同或类似的事情,就像在Asp.NET中一样。这个等等的框架是否有任何库?
我是否需要编写解析器来解析我的php代码并搜索此类标记,并将其替换为与Asp.NET相对应的内容,将<asp:Label/>
替换为<span/>
我的个人偏好:
我喜欢Asp.NET通过将代码隐藏与设计视图或html与c#代码分开来实现的功能。使用asp.net的服务器端控件,开发人员可以轻松地从代码隐藏中访问html控件。这听起来像是关注的分离,我想知道是否有任何项目或方式已经做了同样的事情?
答案 0 :(得分:1)
如果使用一种方法,其中表示层与执行逻辑(例如,模板引擎)分开存储,那么创建一个解析器可以很容易地在HTML中查找特定代码并用其他内容替换它。你可以制作自己的“SMARTY”语言。
但是,如果您的代码只是“可执行PHP”而没有分层,则无法进行此类替换(因为它直接由PHP脚本引擎执行)。通过“可执行的PHP”我的意思是这样的:
<html>
<head>
...
</head>
<body>
<?php echo "Hello world"?>
</body>
</html>
答案 1 :(得分:1)
或者,你可以使用一个MVC框架(Zend Framework,Codeigniter或类似的),它可以为你做很多分离。
正如所建议的那样,SMARTY是一个模板引擎,可以完成你所追求的功能,但这只是这个难题的一部分。抽象数据访问层也是一个好主意。
您还可以在服务器配置上启用短标签,然后您甚至可以使用类似的东西整理您的演示文稿代码。
<html>
<head>
...
</head>
<body>
<?= "Hello, world!" ?>
</body>
</html>
答案 2 :(得分:0)
您可以尝试SimpleHTMLDOM。然后你可以运行类似......
的东西$html = new simple_html_dom();
$html->load_file(fileToParse.html');
foreach($html->find('tagToFind') as $element){
$element->tag='span';
}
这应该有效。