Razor语法PHP等价

时间:2010-09-05 13:59:11

标签: c# php asp.net syntax razor

PHP中是否有新的ASP.NET razor语法?

8 个答案:

答案 0 :(得分:7)

感谢@ mindplay.dk链接到Yii框架的Razor View Renderer!如果您正在寻找PHP的独立模板引擎,我想分享最近的查找Twighttp://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']; ?>

而不是PHP的详细<?=$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,它更强大。