
Like
18.12.2017
12:39:45
Ну, это понятно
Я к тому, что человек привел пример с типами, на что я предложил использовать type hinting
Кто его знает, возможно, он не знает про это? :)

Maksim
18.12.2017
12:40:23
Возможно он ещё знает как круто пхп типы приводит)
Но это всё лирика.

Roman
18.12.2017
12:40:55

Google

Like
18.12.2017
12:41:04

Sergey
18.12.2017
12:41:18
если я пишу библиотечку - мне выгодно знать что упало
ну тобишь когда я например тесты генерю какие

Like
18.12.2017
12:42:00

Sergey
18.12.2017
12:42:51

Maksim
18.12.2017
12:43:07
Если случилось, значит руки в тиски и таску

Sergey
18.12.2017
12:44:00

Like
18.12.2017
12:44:21
Ну блин, мы про типы не договорили :(

Roman
18.12.2017
12:44:29

Sergey
18.12.2017
12:44:29
ты можешь чего словить конечно - но тебе это статические анализаторы подсветят. Другое дело когда тебе надо интегрироваться с чем-то непонятным

Maksim
18.12.2017
12:44:49
У тебя набор входных типов данных всегда конечен. При чём тут контролируемые данные?

Google

Sergey
18.12.2017
12:44:51

Dmitry
18.12.2017
12:45:01
зная пхп и управляя входными данными - в общем строгий режим и не особо нужен

Sergey
18.12.2017
12:45:20

Like
18.12.2017
12:45:28

Maksim
18.12.2017
12:45:45

Roman
18.12.2017
12:47:05
Хех, два лагеря людей получается: кто-то юзает полностью, а кто-то нет)
Я лично в данный момент использую только тайп-хинтинги и тестирую код, но вот что-то задумался про наличие типизации построже

Like
18.12.2017
12:47:29

Dmitry
18.12.2017
12:47:38
по сути с большой вероятностью включение строгого режима приведет к function((int)$param) вместо function($param) и никакого профита

Maksim
18.12.2017
12:47:41
Тебе на уровне кода ни что не мешает всё контролировать самому. Но если такое случилось, что тайпихинт ругнулся - значит херово следил, исправляй.

Sergey
18.12.2017
12:48:20
это тебе не хаскель
а значит где-то будут места где ты не сможешь типы вывести

Like
18.12.2017
12:48:40

Sergey
18.12.2017
12:48:44
а если ты исходишь из позиции "хочешь хорошо - делай хорошо" - то это ниочем

Maksim
18.12.2017
12:49:08
Ну у тебя калькулятор есть. Строки ждёт.
Что ты там покрыть не можешь?

Sergey
18.12.2017
12:49:23

Danila
18.12.2017
12:49:36
ОПОМНИТЕСЬ! Я прозрел!
Вас траллят!
Не повторяйте моих ошибок
Признаваться в собственных ошибках приятно

Google

Danila
18.12.2017
12:50:03
Признайтесь
И перестаньте с ним спорить

Sergey
18.12.2017
12:50:14

Danila
18.12.2017
12:50:26
Не та конфа лол

Maksim
18.12.2017
12:50:32

Like
18.12.2017
12:50:34

Dmitry
18.12.2017
12:50:41
опаньки...

Sergey
18.12.2017
12:51:41
Ну чёт такое себе
если мы говорим о самом примитивном варианте - типа "эта штука принимает на вход массив пользователей" - то ты уже не можешь это через тайп хинты выразить. Остается только phpdoc + статический анализатор. А тогда вопрос - нафига мне нужны тайпхинты в рантайме если я все типы и так могу в компайл тайм прочекать?
а если мне не нужны тайпхинты в рантайме - зачем мне стрикт мод?

Maksim
18.12.2017
12:52:07
Дженерики "скоро" будут

Like
18.12.2017
12:52:13

Sergey
18.12.2017
12:52:23

Dmitry
18.12.2017
12:52:59
дженерики - это всего лишь упрощение, тебе ничего не мешает делать коллекции на каждый нужный тип

Sergey
18.12.2017
12:54:06

Maksim
18.12.2017
12:54:17
Ну если не брать в расчёт экзотику, то я не понял почему пример с пустой строкой.
Баально с тем же калькулятором 0 будет такой же эффект оказывать. Это ведь не типа проблема, а логики

Sergey
18.12.2017
12:54:26
ну то есть я понимаю профит, НО! Это не практично
тем более что какой-нибудь phpstan/phan умеют в простенькие Post[][][]

Like
18.12.2017
12:55:08
Не практично юзать type hinting в языке с динамической типизацией ?

Sergey
18.12.2017
12:55:17

Google

Sergey
18.12.2017
12:55:29
или прекондишен для калькулятора - как хочешь это называй
есть варианта два:
- декларативно описать тип
- императивно проверить в рантайме
в конечном счете все сводится к подтверждению корректности

Dmitry
18.12.2017
12:56:02

Maksim
18.12.2017
12:56:34
Ну что б не долетала дрянь всякая, либо контролируй то, что скармливаешь в ф-ю, либо сооруди аспект какой-нить)

Sergey
18.12.2017
12:56:41
а сейчас из-за того что тайпхнинты в php влияют на рантайм не могут запилить тайпхниты для пропертей и дженерики (медленно)

Dmitry
18.12.2017
12:57:50
спорный вопрос, что лучше - упасть в рантайме в проде или подать неверное значение и произвести неизвестную операцию

Sergey
18.12.2017
12:57:51
короч в php тайхинтинг нужен не для того что бы типы контролировать а что бы иллюзию контроля создавать

Roman
18.12.2017
12:57:58

Admin
ERROR: S client not available

Sergey
18.12.2017
12:58:13

Like
18.12.2017
12:58:19

Roman
18.12.2017
12:58:26

Dmitry
18.12.2017
12:58:35
ну тайпхинт - это тот же ассерт по сути

Sergey
18.12.2017
12:58:49
function ($foo, $bar) {
assert(is_string($foo) && mb_strlen($foo) > 3);
assert(is_numeric($bar));
}

Like
18.12.2017
12:59:14

Sergey
18.12.2017
12:59:17

Maksim
18.12.2017
12:59:27

Sergey
18.12.2017
12:59:36

Google

Dmitry
18.12.2017
12:59:43

Sergey
18.12.2017
12:59:44
пока Зив не сдохнет
и вся эта вордпресс рать

Like
18.12.2017
13:00:07

Sergey
18.12.2017
13:00:27
или хотя бы тайпскрипт)

Like
18.12.2017
13:00:35

Dmitry
18.12.2017
13:00:41

Maksim
18.12.2017
13:00:57

Sergey
18.12.2017
13:01:19
п - ad-hock полиморфизм

Like
18.12.2017
13:01:28

Sergey
18.12.2017
13:01:50

Like
18.12.2017
13:01:57

Sergey
18.12.2017
13:02:00
нет)

Like
18.12.2017
13:02:05
Подло
Добавляют всякую херню типа retry для исключения...
А годные rfc выкидывают

Dmitry
18.12.2017
13:02:33
это хорошо, пока меняются только типы... а вот когда сигнатуры - уже так себе логика будет

?
18.12.2017
13:02:48

Sergey
18.12.2017
13:02:57

Like
18.12.2017
13:02:59

Sergey
18.12.2017
13:03:02