PHP中是否有新的ASP.NET razor语法?
答案 0 :(得分:7)
感谢@ mindplay.dk链接到Yii框架的Razor View Renderer!如果您正在寻找PHP的独立模板引擎,我想分享最近的查找Twig(http://www.twig-project.org/)作为替代方案。它不是Razor语法,但它是简单和可扩展。
以下是该网站的一些示例:
每个:
{% for user in users %}
* {{ user.name }}
{% else %}
No user has been found.
{% endfor %}
阻止&继承强>:
{% 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)
我还在做一些初步的开发和用这个引擎测试,到目前为止我还喜欢它!
答案 1 :(得分:5)
Yii框架有一个类似Razor的视图引擎:
http://www.yiiframework.com/extension/razorviewrenderer
这很简单 - 它似乎没有任何真正的Yii依赖,所以我无法想象将Yii从Yii中拉出并在不同的上下文中使用它是非常困难的。
请注意,这只是一个Razor风格的模板解析器 - 它将Razor风格的模板编译成普通的PHP脚本。它依赖于Yii作为实际的视图引擎。
答案 2 :(得分:3)
Laravel的刀片模板引擎,使用与Razor类似的语法。 https://laravel.com/docs/master/blade
答案 3 :(得分:2)
你最接近的是Fat-Free Framework的模板引擎,但它要求你使用花括号。 Fat-Free使用<?php echo $x['y']['z']; ?>
<?=$x['y']['z']?>
或短标记等效{@x.y.z}
。
答案 4 :(得分:1)
PHP类似的唯一类似Razor的语法就是我所谓的“变量扩展”:
$two = "Two";
echo "One $two Three";
<强>结果:强>
One Two Three
但是,你不能在PHP块之外或双字符串之外使用它(至少不是你想如何使用它)。这不起作用:
<?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
答案 5 :(得分:1)
我只需要看看“Razor语法”,它对ASP.NET来说似乎已经足够了。在PHP中虽然我会应用某种模板框架(我通常自己使用Smarty)来获得一些看起来很干净的HTML页面,只有最少的控制结构和变量引用。
答案 6 :(得分:1)
我实际上正在开发一个完全正确的项目!只需使用$
代替@
。
Node的名称为Phazor。
只需安装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文件)
请注意,这未在生产环境中进行全面测试。
答案 7 :(得分:0)
似乎有人这样做了:https://github.com/steffans/razr
但我仍然会转换为Twig,它更强大。