Часто ли вам приходится заниматься приведением типов в РНР?

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Если уж на то пошло - больше всего писанины вообще из-за убогости php, с отсутствием public final | readonly свойств. Геттеры, конечно, в IDE автоматом генерируются, но все равно.
Ты часто пишешь код в крупных проектах, когда надо реально защитить публичное свойство data transfer object от изменения другими разработчиками во время передачи в другой слой?
Я не представляю зачем это нужно.
 

Вурдалак

I'd like to model your domain
Если уж на то пошло - больше всего писанины вообще из-за убогости php, с отсутствием public final | readonly свойств. Геттеры, конечно, в IDE автоматом генерируются, но все равно.
Во-во.

Я даже иногда начинаю сомневаться нужен ли вообще PHP.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Вурдалак, а что лучше? Typescript? Это ж только compile time, от прямых вызовов, аналогично в phpdoc пишется.
В Golang те же геттеры. В Java столько приведений скаляров напишешь, что никакие readonly не помогут.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
понятно, конечно :)
постраничная разбивка - сравнение строкового числа из базы со строковым числом из ввода, деление с округлением,
JSON - из числа в строку с учетом 32-битного ограничения int,
UUID - из binary в строку и обратно,
бинарные флаги - из строки в число и обратно,
биллинг - куча приведений между int и строкой,
валидации ввода - приведения строки к числу для проверки граничных значений,

думаю, сложно найти такие вызовы, где приведений типов нет
 

fixxxer

К.О.
Партнер клуба
Ну, да, а json надо сериализовывать и десериализовывать. Но много ты json_encode/decode ручками пишешь? Вот тут то же самое
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
когда я попробовал писать на java, приведения строк к числу меня задолбали довольно быстро,
часто ли я пишу приведение скаляров - да, блин, этого просто не замечаешь, но когда прошел и выставил типы в декларации методов и полей - оказалось, часто
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
Ну если писать как на yii, наверное, да, много.
А если мапить одни объекты на другие, то это все где-то там внутри автомапперов и остается на 99%.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
странный слив ... только мак, только нода, только ts, be different, stay hungry, ECO-Friendly, животных в Австралии защищаешь?

а с typescript ты магически идешь скомпилированный js читать? идешь, конечно, все 0.1%, кто пишет на TS для backend, идут

если задачи решаются с автомапперами - на них тратится 10% времени, а остальное уходит на то, что не автоматизируется - легаси, интеграции со сторонними сервисами, ручное форматирование сложных запросов, рефакторинг
чего php не хватает - это дженериков, но сказки про планету Транай неинтересны, дженерики, как и readonly-свойства, компилируются в дикую конструкцию и тормозят, в серьезном проекте я не смог их использовать, пытался
 

fixxxer

К.О.
Партнер клуба
Это в каком языке? В Джаве дженерики компилируются примерно как интерфейсы в Тайпскрипте - compile time проверка, на производительность в рантайме не влияют вообще.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Typescript для JS, Preprocess для PHP
c Java понятно, это немного другой мир с другими процессами разработки
 

fixxxer

К.О.
Партнер клуба
В тайпскрипте точно никакой разницы, там вся типизация compile time/type erasure.
А в php такие хаки пихать - только если по приколу поиграться. Вот будет JIT, тогда можно извращаться )
 

Вурдалак

I'd like to model your domain
Мне, кстати, больше нравится Dart нежели TypeScript. Но принципиально то, что PHP так и будет догонять, я у него не вижу плюсов, кроме популярности и привычности.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
потенциально весьма интересен deno, если сделают компиляцию TS напрямую в bytecode без JS,

за Dart можно следить, гугл может довести его до ума, но они любят уводить технологии на темную сторону - сделают обязательной какую-нибудь фичу, которую проталкивают
 

fixxxer

К.О.
Партнер клуба
принципиально то, что PHP так и будет догонять, я у него не вижу плюсов, кроме популярности и привычности.
Во-во. У меня тут помимо PHP ещё Typescript и Java/Kotlin, и кроме популярности и привычности нет никаких аргументов за.
Мне, кстати, больше нравится Dart нежели TypeScript.
В какой-то момент, лет пять назад, стало понятно, что Typescript взлетел, а Dart нет. Но в прошлом году внезапно стал относительно популярен flutter и у Dart появился второй шанс.
 

Вурдалак

I'd like to model your domain
Еще отмечу, что популярность PHP скорее всего сильно пошатнется. Это нам, «старым» разработчикам, удобен PHP, мы к нему привыкли. Новое поколение разработчиков такой проблемой страдать не будет. И если мы не будем готовы к переменам, то будем как бабки у подъезда говорить, что раньше было лучше.
 

Вурдалак

I'd like to model your domain
В какой-то момент, лет пять назад, стало понятно, что Typescript взлетел, а Dart нет. Но в прошлом году внезапно стал относительно популярен flutter и у Dart появился второй шанс.
Да, я тоже обратил внимание, что Dart опять выходит из тени. Flutter предполагает разработку на iOS/Android и чуть ли ни веб в одном флаконе. Не стоит недооценивать этот язык, учитывая кто за ним стоит.
 

AmdY

Пью пиво
Команда форума
Как раз типизация и стала последним гвоздём в крышку гроба. На листинги свои в symfony проектах страшно смотреть, у тебя: шапка из use, куча php doc, геттеры-сеттеры и всего пару строк реального кода. При этом типизацию завозят годами, частями в разных версиях, но она всё ещё на поколение уступает тому же typescript и больше мешается под ногами вместо помощи, приходится подставлять костыли phpdoc.

@fixxxer ты вроде где-то писал, что не очень-то используешь kotlin в вебе, почему?
 

Вурдалак

I'd like to model your domain
Ууу, страшно смотреть, ууу use, которых никто не видит, ууу, Symfony. «Шлюха она, Матвеева, и наркоманка!!!11»

use, к слову, отражают действительность. Ты просто смотришь в зеркало и кричишь, что всё плохо.
 
Сверху