Razor语法PHP等价

Mig*_*uel 18 php c# asp.net syntax razor

是否有相当于PHP中新的ASP.NET剃刀语法?

Mic*_*cah 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 %}
Run Code Online (Sandbox Code Playgroud)

块和继承:

{% extends "layout.html" %}

{% block content %}
  Content of the page...
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

过滤器:

{{ "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)
Run Code Online (Sandbox Code Playgroud)

我还在用这个引擎做一些初步的开发和测试,到目前为止我还喜欢它!


min*_*.dk 5

Yii框架有一个类似Razor的视图引擎:

http://www.yiiframework.com/extension/razorviewrenderer

它非常简单 - 它似乎没有任何真正的Yii依赖,所以我无法想象从Yii中取出它并在不同的上下文中使用它是非常困难的.

请注意,这只是一个Razor风格的模板解析器 - 它将Razor风格的模板编译成普通的PHP脚本.它依赖于Yii作为实际的视图引擎.


Sin*_*nan 5

Laravel 的 Blade 模板引擎使用与 Razor 类似的语法。https://laravel.com/docs/master/blade

  • 我认为甚至“Blade”这个名字也毫不隐晦地提到了“Razor”。 (3认同)

Chr*_*nte 1

PHP 唯一具有类似 Razor 的语法是我认为所谓的“变量扩展”:

$two = "Two";
echo "One $two Three";
Run Code Online (Sandbox Code Playgroud)

结果:

One Two Three

但是,您不能在 PHP 块之外或双字符串之外使用它(至少不能按照您想要的方式使用它)。这不起作用:

<?php
$two = "Two";
?>
<p>One $two Three</p>
Run Code Online (Sandbox Code Playgroud)

结果:

<p>One $two Three</p>
Run Code Online (Sandbox Code Playgroud)

PHP 块之外的其他 PHP 编程结构也不执行任何操作。所以,这些东西在 PHP 中都不是并行的:http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx