Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的自定义HTML标记_Php_Asp.net_Custom Tags - Fatal编程技术网

PHP中的自定义HTML标记

PHP中的自定义HTML标记,php,asp.net,custom-tags,Php,Asp.net,Custom Tags,当我和Joomla玩的时候!源代码,我看到的代码(或类似的代码,我不太确定,因为那是很久以前的事了): 我并没有说它与上面的完全一样,但当我看到类似Asp.NET的自定义标记时,我感到惊讶: <asp:Label ID="lblLabel" runat="server"/> 我现在想知道如何像在Asp.NET中一样在PHP中完成相同或类似的事情。是否有任何用于此等的框架库 我是否需要编写一个解析器来解析我的php代码并搜索这些标记,并用相应的标记替换它们,比如Asp.NET

当我和Joomla玩的时候!源代码,我看到的代码(或类似的代码,我不太确定,因为那是很久以前的事了):


我并没有说它与上面的完全一样,但当我看到类似Asp.NET的自定义标记时,我感到惊讶:

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

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

我是否需要编写一个解析器来解析我的php代码并搜索这些标记,并用相应的标记替换它们,比如Asp.NET将
替换为

我的个人偏好:


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

如果您使用一种方法,其中表示层与执行逻辑(例如,模板引擎)分开存储,然后很容易创建一个解析器,在HTML中查找特定代码,并用其他方法替换它。你可以创造自己的“聪明”语言

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

<html>
  <head>
  ...
  </head>
  <body>
  <?php echo "Hello world"?>
  </body>
 </html>

...

或者,您可以使用一个MVC框架(Zend framework、Codeigniter或类似的框架),它可以为您分离很多关注点

正如所建议的,SMARTY是一个模板引擎,它可以完成您所追求的大部分功能,但这实际上只是难题的一部分。抽象数据访问层也是一个好主意

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

<html>
    <head>
    ...
    </head>
    <body>
        <?= "Hello, world!" ?>
    </body>
</html>
$html = new simple_html_dom();
$html->load_file(fileToParse.html');
foreach($html->find('tagToFind') as $element){
    $element->tag='span';
}

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

<html>
    <head>
    ...
    </head>
    <body>
        <?= "Hello, world!" ?>
    </body>
</html>
$html = new simple_html_dom();
$html->load_file(fileToParse.html');
foreach($html->find('tagToFind') as $element){
    $element->tag='span';
}
这应该行得通


你可能想看看

老实说,我不喜欢Asp.NET,因为我和其他人谈过,但你不能用模板引擎实现类似的功能吗?首先想到的是Smarty,我已经用了很长一段时间了,非常可靠而且易于破解。PHP是一种解释语言,意味着它在配置到apache或IIS环境时执行逐行代码,然后执行以PHP结尾的任何文件。这意味着一切都在服务器端执行,而.net使用即时编译器,它保存语法并在稍后阶段执行。这是可能的,但基本上您需要更改PHP。i、 让它像JIT编译器一样。。。!可能重复感谢关于模板引擎的热播不要混淆
Gee,真的吗?我理解你的担心。然而,如果他们想使用更多的“模板样式”标记,比如