Клинок Ларавелла {{...}} против <? =?> - PullRequest
0 голосов
/ 29 октября 2018

Я перехожу с cakephp на laravel и хотел бы понять, в чем преимущество {{ }} перед короткими тегами php <?= ?>. Я полагаю, что теги php работают быстрее, не требуя какой-либо обработки с помощью шаблонов. Я понял, что {{ }} сделает некоторое спасение, но когда нет необходимости, зачем использовать {{ }}, а не <?= ?>. Также в чем преимущество @foreach и @if ... против <?php foreach():?> ... <?php endforeach ?> и <php if():?> <?php endif;?>.

Ответы [ 4 ]

0 голосов
/ 29 октября 2018

Спасибо всем за ваши ответы, но я все еще не получил ответ, который искал ... Имеется в виду разъяснение того, по какому пути я должен идти с Laravel (так как я пришел из года рождения, и там все было проще с точки зрения шаблонизации). Я понял и упомянул, что {{}} экранирует строки для XSS, ясно до сих пор ... но мои проблемы заключаются в следующем:

  1. Я перенесу некоторые шаблоны из cakephp и уже там ... нет, мне нужно переместить все в {{}} и @foreach и @ if

  2. Не являются ли эти {{}} теги @foreach дополнительными и увеличивают время выполнения? Я имею в виду, что шаблон должен конвертировать все эти теги в php-теги в конце концов, верно?

  3. Я не нашел ХОРОШЕГО редактора (или IDE), чтобы красиво отображать эти теги, показывать мне начало и конец повторяющихся структур или структур принятия решений, окрашивать и выделять синтаксис внутри тегов ... так что это раздражает ... по крайней мере, я вижу, что я вижу ОЧЕНЬ ясно во всех редакторах, если я закрываю квадратные скобки, массивы, если я пропускаю 'или "... и т. д. Любое предложение хорошего редактора для распознавания синтаксиса блейдов?

  4. Как я понимаю, выгода {{}} (избежание xss), но в чем выгода @foreach vs или @if vs ???

  5. Поскольку я еще не знаю laravel (и всю его мощь), есть ли скрытая функция, о которой я не знаю, которая затруднит работу (миграция, экстраполяция, цвет, добавление запаха :))) шутки ) ... в будущем, если я буду использовать php-теги вместо blade-тегов в моих файлах? Например, если вы используете теги blade, в будущем будет проще перенести все мои файлы на другой шаблонизатор, и это не сработает, если я использую теги php?

Еще раз спасибо за то, что поделились своими мыслями

0 голосов
/ 29 октября 2018

из документов Laravel:

Операторы Blade {{}} автоматически отправляются через PHP-функцию htmlspecialchars, чтобы предотвратить атаки XSS. Если вы не хотите, чтобы ваши данные были экранированы, вы можете использовать следующий синтаксис:

Hello, {!! $name !!}.

Будьте очень осторожны при отображении контента, предоставленного пользователями вашего приложения. Всегда используйте escape-синтаксис с двойными фигурными скобками, чтобы предотвратить атаки XSS при отображении пользовательских данных.

Кроме того, если вы используете шаблон блэйд-движка, это как соглашение {{ }}

https://laravel.com/docs/5.7/blade#displaying-data

0 голосов
/ 29 октября 2018

Преимущество {{ }} в том, что его внешний вид довольно прост для понимания, а также экранирование специального символа из строки. После использования @foreach мы можем минимизировать код, а также упростить код до понимания

0 голосов
/ 29 октября 2018

{{ ... }} работает только с блейд-файлами, в то время как <?= ... ?> работает с каждым php-файлом. Это единственное отличие, которое я знаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...