Это действительно зависит от вас.
Но с использованием фреймворков-помощников, виджетами и стилями кодирования вы можете сохранить целостность кода, уменьшить ошибки, ошибки и даже снизить риски безопасности.
Использование вашего примера.
Представьте себе, что $this->title
устанавливается на имя пользователя в основной файл макета:
<?php $this->title = $user->name; ?>
<h1><?= $this->title ?></h1>
Теперь, давайте представим, что пользователь удалось установить его имя в <script>console.log('I can steal your cookies now!');</script>NotAHacker
в регистрационной форме (также потому, что вы решил сохранить непосредственно в базе данных, а не использовать фреймворк).
Это сделает следующее:
<h1><script>console.log('I can steal your cookies now!');</script>NotAHacker</h1>
И вы увидите только это:
NotAHacker
А в консоли JavaScript появится I can steal your cookies now!
Это большой риск для безопасности ! Плохие люди могут красть ваши файлы cookie, записывать активность, красть пароли и т. Д.
Но это можно легко исправить, используя рамки.
<?php $this->title = $user->name; ?>
<h1><?= Html::encode($this->title) ?></h1>
И воздаст:
<h1><script>console.log('I can steal your cookies now!');</script>NotAHacker</h1>
И вы увидите:
< скрипт > console.log; (' я могу украсть куки Теперь '!) </script > NotAhacker
Но ничего не будет выполнено!
Итак, в чем смысл?Такие структуры, как Yii2, разрабатывают свои помощники и виджеты, поэтому вы можете доверять им, что при использовании их методов ничего плохого не произойдет, и потому, что если вы когда-нибудь столкнетесь с проблемами кодирования, вам понравятся эти классы помощников). Это имеет решающее значение в производственной среде, когда у вас много переменных, и вы не можете позволить чему-либо проскользнуть через ваши пальцы.
TL; Если вы доверяете своей структуре, используйте их доступные методы каждый раз, когда сможете.
Если я знаю путь к ссылке или изображению и не использую переменные, было бы более эффективно/быстрее просто закодировать тег или ? –
Конечно, быстрее писать без php. Такие простые вещи, без сомнения, быстрее и лучше писать напрямую. – XzAeRo