Синтаксис Razor PHP-эквивалент

Есть ли эквивалент нового синтаксиса брандмауэра ASP.NET в PHP?

Ответы

Ответ 1

Спасибо @mindplay.dk за ссылку на Razor View Renderer для Yii Framework! Я хотел бы поделиться недавней находкой Twig (http://www.twig-project.org/) в качестве альтернативы, если вы ищет автономный механизм шаблонов для PHP. Это не синтаксис 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)

Я все еще делаю предварительную разработку и тестирование с помощью этого движка, и мне это нравится до сих пор!

Ответ 2

В структуре Yii существует механизм просмотра, подобный Razor:

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

Это очень просто - у него нет никаких реальных зависимостей Yii, поэтому я не могу себе представить, что было бы очень сложно вытащить это из Yii и использовать его в другом контексте.

Имейте в виду, что это всего лишь синтаксический анализатор шаблонов в стиле Razor - он компилирует шаблоны стиля Razor в простые скрипты PHP с ванилью. Он полагается на Yii для реального механизма просмотра.

Ответ 3

Ближе всего вы найдете внутри Fat-Free Framework, но для этого требуется использовать фигурные скобки. Вместо PHP verbose <?php echo $x['y']['z']; ?> или короткого эквивалентного тега <?=$x['y']['z']?>, Fat-Free использует {@x.y.z}

Ответ 4

Единственный синтаксис, похожий на Razor, что PHP имеет нечто похожее на то, что я считаю, называется "расширение переменной":

$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

Мне просто нужно было посмотреть "синтаксис Razor" и это выглядит достаточно хорошо для ASP.NET. В PHP, хотя я бы применил какую-то структуру шаблонов (я обычно использую Smarty сам), чтобы получить некоторые красивые чистые выглядящие HTML-страницы с только минимальная структура управления и привязка переменных.

Ответ 7

Кажется, кто-то это сделал: https://github.com/steffans/razr

Но я все равно обращусь к Twig, это намного мощнее.