Для того что чтобы сделать вклад в развитие РНР как языка, надо сначала выучить этот язык, хотя бы основы. Причем не только язык, а основы программирования в целом. Потому что иначе вместо предложения выйдет посмешище.
проверка на существование и пустоты массива $messages
Под "проверкой", как я понимаю, тут имеется в виду заметание мусора под ковер? Любимый нубами подход, который заключается в том чтобы
помешать РНР сообщить тебе о проблеме, когда ты пытаешься перебрать в цикле несуществующую переменную или не массив?
И что имеется под пустотой? Если пустой массив - то зачем это проверять-то?
То есть, Если обладать минимальными навыками программирования, и всегда иметь минимальное представление о том, что содержат твои переменные, то код получается
<ul class="list">
<?php foreach( $messages as $message ) : ?>
<li class="list__item"><?= $message['content']; ?></li>
<?php endforeach ?>
</ul>
что является прекрасным читабельным кодом, где разделены РНР и HTML.
Вместо твоего монстра, где ты просто запихал зачем-то вперемешку html, РНР, оператор цикла, условного перехода, подавление ошибок, вывод HTML - и все это ради того чтобы сэкономить одну строчку кода в шаблоне.
tag( 'ul class="list"', $messages as $message )
которая непонятно - то ли РНР, то ли HTML, которую непонятно как расширять, непонятно как читать.
Не говоря уже о том, что по синтаксису - это
шаблонизатор, а не синтаксис РНР, а ты про них
даже не слышал.