Задать вопрос
@YanAlexandrov
Чайник со стажем

Как сделать вклад в развитие PHP?

Есть небольшое желание сделать вклад в развитие PHP, как языка. Однако с языком Cи не знаком от слова совсем. На официальном сайте есть возможность добавления предложения, но совершенно не понятно, как его оформить и вообще, рассматривает ли их кто-нибудь... Или нужно предложить не только концепцию, но и уже готовую реализацию. И вообще, стоит ли тратить на это время?
Суть концепции

Сейчас, для вывода html элементов в цикле используется такая конструкция:
<?php if( $messages ) : ?>
<ul class="list">
	<?php foreach( $messages as $message ) : ?>
	<li class="list__item"><?php echo $message['content']; ?></li>
	<?php endforeach; ?>
</ul>
<?php endif; ?>

Идея в том, чтобы сделать его более компактным, например:
<?php tag( 'ul class="list"', $messages as $message ) : ?>
	<li class="list__item"><?php echo $message['content']; ?></li>
<?php endtag( 'ul' ); ?>

В конструкции tag сразу идёт проверка на существование и пустоты массива $messages, а также вывода тега ul class="list".

А вот как это могло бы выглядеть с оператором else, вместо:
<ul class="list">
<?php if( $messages ) : ?>
	<?php foreach( $messages as $message ) : ?>
	<li class="list__item col-4"><?php echo $message['content']; ?></li>
	<?php endforeach; ?>
<?php else: ?>
	<li class="list__item col-12">Messages not found</li>
<?php endif; ?>
</ul>

могло бы быть так:
<?php tag( 'ul class="list"', $messages as $message ) : ?>
	<li class="list__item col-4"><?php echo $message['content']; ?></li>
<?php elsetag(): ?>
	<li class="list__item col-12">Messages not found</li>
<?php endtag( 'ul' ); ?>


Что скажете?
  • Вопрос задан
  • 251 просмотр
Подписаться 1 Простой 5 комментариев
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Все шаги подробно описаны: https://wiki.php.net/rfc/howto

Однако, я бы не рекомендовал вам тратить своё и чужое время на это предложение.
Во-первых:
If you don't have the skills to fully implement your RFC and no-one volunteers to code it, there is little chance your RFC will be successful.

А во-вторых, это настолько нишевое и малополезное предложение, что усложнять язык ради него никто не станет.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Для того что чтобы сделать вклад в развитие РНР как языка, надо сначала выучить этот язык, хотя бы основы. Причем не только язык, а основы программирования в целом. Потому что иначе вместо предложения выйдет посмешище.

проверка на существование и пустоты массива $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, которую непонятно как расширять, непонятно как читать.

Не говоря уже о том, что по синтаксису - это шаблонизатор, а не синтаксис РНР, а ты про них даже не слышал.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@66demon666
Сетевой админ, АТС-админ
Сделайте фреймворк реализующий данную концепцию, в чем проблема-то, зачем С
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы