TGViewer
Хэндлим тему | Дерепко Хэндлим тему | Дерепко @handle_topic · 276 subscribers
Post #53 643
👨‍💻 Удобная разработка

Как вы могли заметить, в последнее время мне очень часто приходится работать с Kotlin: Cron, Buggregator и конечно MetaStorm!
Синтаксис Kotlin очень нравится:
- C-like синтаксис, сразу всё понятно
- Как Java, только менее многословная, очень немногословная Java!
- Короткие синтаксические конструкции
- Система типов. Есть дженерики, но нет дизъюнкции и конъюнкции типов 😲
- Интересная схема “расширения” классов

В общем, когда изучал конструкции различных плагинов в Open source увидел, что в Котлине можно делать так:

$var = $nullableVar ?: return

Вместо привычного

$var = $nullableVar
if ($var == null) {
return
}


Вопрос 3-х строк, но написав подобное более 100 раз без этого сахарка уже не то.
Более того, помимо return можно использовать и другие управляющие конструкции: break и continue.

Возвращаясь к работе на PHP я уже по привычке начинаю так писать, но на PHP так писать нельзя. Пока что 😁

Я давно привык писать код с “early return”: когда в самом начале проверяется код на различные условия, а дальше выполняется логика метода с полностью валидным состоянием.

Подобные операции на пару десятков строк можно было бы схлопнуть несколько раз!
Лаконичный и выразительный код, это ускорение и упрощение чтения. Когда ты не дочитывая конструкции до конца уже понимаешь однозначность намерения, когда где-нибудь в неудобном месте не приходится дублировать десяток проверок, чтобы сделать наконец-то этот return null;!

Примеры:


$result = $condition ? $a : return;
$result = $conditionA ? $a : ($conditionB ? $b : break);
$result = $condition ?? return;
$result = $condition ?? break;


и любые другие комбинации ваших выражений, даже такие как эти:

"string" . 1 + throw throw throw throw throw throw new Exception("exception");


Да, синтаксически это полностью валидный код в PHP, хоть и выглядит как 💩
Я решил добавить пару подобных тест-кейсов в PHP: Pull request.

В общем, надеюсь скоро подобный код можно будет писать и return, break и continue:

function test() {
return return return return return throw throw throw throw new Exception();
}


✔️ Подписка на PHP Internals
✔️ Попросить милостыню: https://news-web.php.net/php.internals/126252
✔️ Proof of Concept: https://github.com/php/php-src/pull/17647
🚫 RFC: как разрешат создавать RFC, так и создам

Как вы оцениваете такую возможность?
Когда-то было тоже самое с throw конструкция. Пора и другим подтягиваться?

—

@handle_topic
Telegram Хэндлим тему | Дерепко 🗓 Cron & Crontab Support Plugin — Время от времени делаю плагин для поддержки PHP Language Recognition Tool и его синтаксиса pp2 Делаю в свободное время, поэтому часто переключаюсь между контекстами, что приводит к отрыву от потока внимания, а из-за этого…
  • 🔥 9
  • 👍 5
  • 👏 2
  • ❤ 1
  • 🐳 1
More from @handle_topic
  1. Sep 9, 2026Пыхник’26 — целая неделя PHP! С 28 сентября по 2 октября пройдёт Пыхник’26 — онлайн-конфер…
  2. Aug 24, 2026Мой Pull Request в vlucas/dotenv смёржили! Рад ли я? Конечно. Прихнаюсь честно, у меня это…
  3. Aug 5, 2026Jetbrains выделили LSP ядро для Java/Kotlin, так что теперь вся (а вся?) мощщщщь IDEA дост…
  4. Jul 30, 2026Вайбкодеры?
  5. Jul 19, 2026Когда выучил высоконагруженные системы @git_rebase / send memes
  6. Jun 30, 2026Jetbrains Air на Windows! Если вы вдруг разрабатываете на винде (сожалею вам), то можете п…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →