asp.net Razor语法PHP等效项

62o28rlo  于 2022-11-19  发布在  .NET
关注(0)|答案(9)|浏览(318)

PHP中是否有与新的ASP.NET剃刀语法等效的语法?

xzabzqsa

xzabzqsa1#

感谢@ mindplay.dk为Yii框架提供Razor视图渲染器的链接!如果你正在寻找一个独立的PHP模板引擎,我想分享一个最近的发现,Twighttp://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)

我还在做一些初步的开发和测试与这个引擎,我喜欢它迄今为止!

li9yvcax

li9yvcax2#

Yii框架有一个类似Razor的视图引擎:
http://www.yiiframework.com/extension/razorviewrenderer
这很简单--它似乎没有任何真实的的Yii依赖项,所以我无法想象将它从Yii中取出并在不同的上下文中使用它会有什么困难。
请注意,这只是一个Razor样式的模板解析器--它将Razor样式的模板编译成普通的PHP脚本。它依赖于Yii作为实际的视图引擎。

ia2d9nvy

ia2d9nvy3#

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

pkwftd7m

pkwftd7m4#

最接近的例子是Fat-Free Framework的模板引擎,但它需要使用大括号。

dgiusagp

dgiusagp5#

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

c9qzyr3d

c9qzyr3d6#

我只需要查一下“Razor语法”,它对ASP.NET来说似乎足够好了。在PHP中,我会应用某种模板框架(我自己通常使用Smarty)来获得一些外观整洁的HTML页面,只有最少的控制结构和变量引用。

5tmbdcev

5tmbdcev7#

我正在做一个项目,就是这样做的!只是用一个$代替了@
节点的名称为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文件)
请记住,这并没有在生产环境中进行完全测试.

jei2mxaa

jei2mxaa8#

看来是有人干的:https://github.com/steffans/razr
但我仍然会转换到小枝,它是强大得多。

rvpgvaaj

rvpgvaaj9#

我认为它相当于php / laravel中的Blade,因为,剃刀本身是框架(.net)的一部分,那么它将是公平的比较

相关问题