PHP中是否有与新的ASP.NET剃刀语法等效的语法?
xzabzqsa1#
感谢@ mindplay.dk为Yii框架提供Razor视图渲染器的链接!如果你正在寻找一个独立的PHP模板引擎,我想分享一个最近的发现,Twig(http://www.twig-project.org/)作为替代。它不是Razor语法,但它 * 简单 * 和 * 可扩展 *。以下是该网站的一些示例:
对于每个:
{% for user in users %} * {{ user.name }} {% else %} No user has been found. {% endfor %}
阻止继承(& I):
{% extends "layout.html" %} {% block content %} Content of the page... {% endblock %}
过滤器:
{{ "now"|date("m/d/Y") }} {{ "I like %s and %s."|format(foo, "bar") }} returns: I like foo and bar. (if the foo parameter equals to the foo string)
我还在做一些初步的开发和测试与这个引擎,我喜欢它迄今为止!
li9yvcax2#
Yii框架有一个类似Razor的视图引擎:http://www.yiiframework.com/extension/razorviewrenderer这很简单--它似乎没有任何真实的的Yii依赖项,所以我无法想象将它从Yii中取出并在不同的上下文中使用它会有什么困难。请注意,这只是一个Razor样式的模板解析器--它将Razor样式的模板编译成普通的PHP脚本。它依赖于Yii作为实际的视图引擎。
ia2d9nvy3#
Laravel的Blade模板引擎使用与Razor类似的语法。https://laravel.com/docs/master/blade
pkwftd7m4#
最接近的例子是Fat-Free Framework的模板引擎,但它需要使用大括号。
dgiusagp5#
PHP唯一与Razor类似的语法是我所认为的“变量扩展”:
$two = "Two"; echo "One $two Three";
结果:
One Two Three但是,你不能在PHP块或双字符串之外使用它(至少你不想使用它)。这是行不通的:
One Two Three
<?php $two = "Two"; ?> <p>One $two Three</p>
<p>One $two Three</p>
PHP块之外的其他PHP编程结构也不做任何事情。因此,这些东西在PHP中都是不可并行的:http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx
c9qzyr3d6#
我只需要查一下“Razor语法”,它对ASP.NET来说似乎足够好了。在PHP中,我会应用某种模板框架(我自己通常使用Smarty)来获得一些外观整洁的HTML页面,只有最少的控制结构和变量引用。
5tmbdcev7#
我正在做一个项目,就是这样做的!只是用一个$代替了@。节点的名称为Phazor。只需安装npm i phazor -g
$
@
npm i phazor -g
<head> /* Phazor comments inside html */ ${ // Vanilla PHP inside ${ } $title = "I love fruit"; $isFruit = true; } /* An echo expression */ <title>$(ucwords($title))</title> </head> <body> /* Variable expression */ <h1>$title.</h1> /* Inline statement */ $if ($isFruit) { <p>It sure is great!</p> } </body>
然后运行phazor sourceFolder destinationFolder,它会将所有的phazor**.ph**文件编译到目标文件夹中。(它也可以编译文件夹中的TypeScript和SASS文件)请记住,这并没有在生产环境中进行完全测试.
phazor sourceFolder destinationFolder
jei2mxaa8#
看来是有人干的:https://github.com/steffans/razr但我仍然会转换到小枝,它是强大得多。
rvpgvaaj9#
我认为它相当于php / laravel中的Blade,因为,剃刀本身是框架(.net)的一部分,那么它将是公平的比较
9条答案
按热度按时间xzabzqsa1#
感谢@ mindplay.dk为Yii框架提供Razor视图渲染器的链接!如果你正在寻找一个独立的PHP模板引擎,我想分享一个最近的发现,Twig(http://www.twig-project.org/)作为替代。它不是Razor语法,但它 * 简单 * 和 * 可扩展 *。
以下是该网站的一些示例:
对于每个:
阻止继承(& I):
过滤器:
我还在做一些初步的开发和测试与这个引擎,我喜欢它迄今为止!
li9yvcax2#
Yii框架有一个类似Razor的视图引擎:
http://www.yiiframework.com/extension/razorviewrenderer
这很简单--它似乎没有任何真实的的Yii依赖项,所以我无法想象将它从Yii中取出并在不同的上下文中使用它会有什么困难。
请注意,这只是一个Razor样式的模板解析器--它将Razor样式的模板编译成普通的PHP脚本。它依赖于Yii作为实际的视图引擎。
ia2d9nvy3#
Laravel的Blade模板引擎使用与Razor类似的语法。https://laravel.com/docs/master/blade
pkwftd7m4#
最接近的例子是Fat-Free Framework的模板引擎,但它需要使用大括号。
dgiusagp5#
PHP唯一与Razor类似的语法是我所认为的“变量扩展”:
结果:
One Two Three
但是,你不能在PHP块或双字符串之外使用它(至少你不想使用它)。这是行不通的:
结果:
PHP块之外的其他PHP编程结构也不做任何事情。因此,这些东西在PHP中都是不可并行的:http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx
c9qzyr3d6#
我只需要查一下“Razor语法”,它对ASP.NET来说似乎足够好了。在PHP中,我会应用某种模板框架(我自己通常使用Smarty)来获得一些外观整洁的HTML页面,只有最少的控制结构和变量引用。
5tmbdcev7#
我正在做一个项目,就是这样做的!只是用一个
$
代替了@
。节点的名称为Phazor。
只需安装
npm i phazor -g
然后运行
phazor sourceFolder destinationFolder
,它会将所有的phazor**.ph**文件编译到目标文件夹中。(它也可以编译文件夹中的TypeScript和SASS文件)请记住,这并没有在生产环境中进行完全测试.
jei2mxaa8#
看来是有人干的:https://github.com/steffans/razr
但我仍然会转换到小枝,它是强大得多。
rvpgvaaj9#
我认为它相当于php / laravel中的Blade,因为,剃刀本身是框架(.net)的一部分,那么它将是公平的比较