LINUX.ORG.RU

[news]Вышла синтаксическая надстройка над php - php-snow

 


0

1

Вышла синтаксическая надстройка над php - php-snow Различия с оригинальным php

  • убран ненужный префикс $
  • петоноотсупы вместо {} (на любителя), отступ в 4 пробела обязательно (сомнительное решение), и даже есть pass
  • запятые в массивах и вызовах функций необязательны но если пишите запятые то пишите везде (товарищи не понимаю что запятая только во благо как визуальный разделитель и ее можно пустить ка ненужную когда каждый аргумент на новой строчке)
  • конкатенация строк оператором % (довольно необычный выбор)
  • сокращатель слова return - <- (имхо он должен смотреть в другую сторону)
  • у if, while и прочих flow control сущностей на надо скобок (товарищи не понимают что они визуально группируют выражение, это вовсе не мусор)
  • постфиксный if - when <- a when b == 1 вместо if(b == 1) <- a (ага теперь у вас будет уходить еще больше времени на то чтобы подумать как тут написать - через if или через when, а еще теперь вы случайно не заметите when где то в конце строки)
  • 3 буквенные сокращения слов - con вместо const, pri вместо private итд (ребята и не знали что у нас автокомплит а их обрывки, а не сокращения вовсе даже не читаемы и потеряются из-за своей короткости в коде)
  • упрощенный switch с опущенным словом case (сомнительное решение) и авто break ом или fallthro если break не нужен (довольно популярный костыль)
  • сокращенный синтаксис для функции - fn(аргументы) тело. Если аргументов нет то скобок тоже не должно быть (и зачем такое, не понимаю)
  • Костылек для императивщины пхп - foo(a, b) <=> a->foo(b), опять же если аргументов нет то скобок обязательно быть не должно (см. предыдущий пункт) (а ну и да теперь очередной ненужный выбор foo(a) или a->foo)
  • гуарды на аргументы функции (что само по себе огромный плюс) @int x _ > 0 fn(x) _inc <- x + 1 (юзание невидимой переменной _ взято из скалы и довольно неудачно, ее просто не видно), поддерживается много гуардов в []
  • нету this - доступ к внутренностям класса через просто точку .a = 1 или :: ::a = 1 для статиков (опять таки довольно неудачно - точка внизу, ее не видно, как разделитель она хороша но не как префикс)
  • поддержка or c null ем и empty - a ?? b и a ?! b соотвественно
  • statement as expr из лиспа и скалы a = if b > 0 <-- 1 else <-- 2 (отношусь негативно, легко заоверюзать, легко не разглядеть эти <-- и вообще порождает сложно читаемый код)
  • поддерживает костыль из пхп $i = 'a'; $$i = 1 <=> $a = 1 ввиде {a} <=> $$a (коллизия с подстановкой в строку)
  • Внезапно доллар никуда не девался - теперь он как префикс констант
  • нету конструктора - он просто помещается в тело класса (взято из цейлона емнип) и обязательно на самом верху, деструтор обязательно внизу но объявленный явно
  • требует строгий порядок полей в классе - сначала константы потом публичные потом защищенные и уж потом частные

Ну и порождает это чудо код не строчка в строчку с оригинальным кодом так что будет отличный дебаг
P.S. код выделен подчеркиванием потому что у вас <pre> c новыми строками

★★★★

statement as expr скорее всего тоже из Python:
a = 1 if b > 0 else 2
Только с идиотскими <--.

Virtuos86 ★★★★★
()

юзание невидимой переменной _ взято из скалы

А не из Пёрла? :)



А так, задумка интересная и ряд решений полезны. Можно бы было (благо, несложно) прикрутить к своему фреймворку как ещё один class-loader. Но ряд вещей совершенно идиотские, так что даже пробовать, наверное, не буду.

KRoN73 ★★★★★
()

Единственное предназначение, которое я этому вижу - это плавная миграция php-юзеров в python-разработчики.

Другой причины изобретать python ещё раз, теперь на php - мне непонятно.

deb
()
Ответ на: комментарий от nokachi

По автору давно логопед плачет. Неудивительно, что ничего непонятно.

deb
()

Вах, какой тонкий троллинг пыхомразей! Из тотального пыхоговна сделали абсолютно бесконечное говнище. А ведь сожрут и добавки попросят... Малаца, ребяты.

anonymous
()
Ответ на: комментарий от anonymous

Да, я тоже не поверил, что они это серьезно. Изврат на изврате.

amomymous ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.