
Artur
20.02.2018
21:34:05
ну здесь явно changeStatus

Sergey
20.02.2018
21:34:09
в CRUD у тебя будет if (status == "closed" ) { do something } else {}
да, и там может быть какая-то логика

Artur
20.02.2018
21:34:24

Google

Sergey
20.02.2018
21:34:24
в зависимости от статуса что-то сделать например

Artur
20.02.2018
21:34:31
инкапсуляция!
шутка на тему ооп

Sergey
20.02.2018
21:34:51
фууууу :)
ну так я ж не написал где оно - в changeStatus или не changeStatus не важно
возможно у меня там и объектов не будет

Artur
20.02.2018
21:35:07
зато удачно получилось пошутить

Sergey
20.02.2018
21:35:08
структуры данных и пайплайны на функциях чистых
ООП оно ж не про классы
суть идеи в том что в моем случае будет метод close()
а не changeStatus
или будет отдельный объект представляющий статус который умеет переход в другие (паттерн state object)
но разница именно в этом. И мы все же помним что серебрянных пуль не бывает?
короч оставлю видос и пойду спать

Google

Sergey
20.02.2018
21:38:19
https://www.youtube.com/watch?v=fWU8ZK0Dmxs

Artur
20.02.2018
21:38:51
ООП оно ж не про классы
моё имхо было и остаётся - это попытка уложить в голове кожанных мешков структуры из реального мира потому что в оптимальный они(человеки) не умеют

Sergey
20.02.2018
21:38:57
там чуть-чуть о том что я все никак выходит не могу сформулировать (в плане чем плохи сеттеры). В видосе вместо сеттеров рассматривают if

Artur
20.02.2018
21:39:22

Sergey
20.02.2018
21:39:22
но идея та же

Bohdan
20.02.2018
21:39:29
опа, уди
схоронил

Sergey
20.02.2018
21:39:46

Artur
20.02.2018
21:39:56
и типа здесь кто-то это доказал
я аж ахренел

Bohdan
20.02.2018
21:41:36
расширение возвращаемого типа?

Sergey
20.02.2018
21:41:41
ты про то что можно "убрать" тип?

Artur
20.02.2018
21:42:01

Bohdan
20.02.2018
21:42:03
а, точно, там "убрать", а не расширить
все путаю хотелки с могульками

Sergey
20.02.2018
21:42:27
ну хорошо было бы поддержка полноценная, а не просто убрать

Artur
20.02.2018
21:42:36

Google

Sergey
20.02.2018
21:42:38
но плохого ничего нет

Artur
20.02.2018
21:42:44
но не через парадный вход
смысла нет

Bohdan
20.02.2018
21:43:17

Artur
20.02.2018
21:43:27
очередная возмодность отсрелить себе ноги

Bohdan
20.02.2018
21:43:44
require no more, promise no less

Artur
20.02.2018
21:43:51
Принцип инверсии зависимостей (The Dependency Inversion Principle)
«Зависимость на Абстракциях. Нет зависимости на что-то конкретное.»

Bohdan
20.02.2018
21:44:23
при чем тут оно?)

Artur
20.02.2018
21:44:42
ну типа ДВС вдруг начал есть не бензин а мясо
те в солид принципах 1 лишнее/?

Artur
20.02.2018
21:45:22
вот было бы удобно
но старые двс умрут

Bohdan
20.02.2018
21:45:40
ну они как бы не гарантируют идеальности
если у тебя сначала движок работает на бензине, а потом на любом топливе - тогда это lsp
ну и с dip конфликтов нет

Sergey
20.02.2018
21:47:23

Artur
20.02.2018
21:48:03
ну близко

Google

Bohdan
20.02.2018
21:48:07

Sergey
20.02.2018
21:48:14
и в рамках LSP "расширение прекондишенов для подтипов" это валидный сценарий
а соблюдают контракты или нет - это уже другой вопрос

Artur
20.02.2018
21:48:48

Sergey
20.02.2018
21:48:49
потому я и говорю что "запилили бы они полноценно ковариантность/контрвариантность типов - было бы збс"
никаких нарушений

Admin
ERROR: S client not available

Artur
20.02.2018
21:49:11
по сути код использовал контрактный метод с аргументом а в виде обхекта а стал принимать условно json в виде стринга

Bohdan
20.02.2018
21:49:12
прекондишн - на вход, посткондишн - на выход? я правильно уловил терминологию?

Artur
20.02.2018
21:49:22

Sergey
20.02.2018
21:49:25
а то что ты туда запихнул что-то не то и сломалось - это уже нарушение LSP на уровне контракта
а не json

Artur
20.02.2018
21:49:52
если с сеттерами ещё есть причины(в пхп они нужны по сути для валидации строгой)
то с таким подходом просто мрак

Sergey
20.02.2018
21:50:05
если он вдруг начал принимать json вместо строк - ты сузил прекондишен и нарушил LSP

Artur
20.02.2018
21:50:10

Sergey
20.02.2018
21:50:24
язык тут не причем

Google

Artur
20.02.2018
21:50:44
ену я понял за что ты выступаешь
новый тип двигателя начинает есть не только бензин но и керасин

Sergey
20.02.2018
21:51:04
я сдаюсь

Artur
20.02.2018
21:51:19
вот это я говорю но бля

Sergey
20.02.2018
21:51:20
ты не читаешь что тебе пишут
ты просто несешь свой поток сознания дальше

Artur
20.02.2018
21:51:36
ага я должен был уже прочитать то что ты мне сказал и прозреть
а ты хороооош
я конкретный пример привёл, меж тем

Sergey
20.02.2018
21:53:00

Artur
20.02.2018
21:53:07
был бензин стал null - это не производная

Sergey
20.02.2018
21:53:24
вот тебе пример точно такого же нарушения LSP без какого либо изменения на уровне интерфейсов
люди могут сломать LSP по разному, а изменения в php 7.2 не особо на это влияют

Artur
20.02.2018
21:54:40
не понял. речь про то что троу не ожидается потому что стринг?

Sergey
20.02.2018
21:55:33
ну у тебя был двигатель который жрал 95-ый бензин а ты туда саляру заливаешь. С точки зрения типов и то и то - топливо

Artur
20.02.2018
21:56:24
это слабо связано с тем что раньше двс принимал топливо по недсмотру(ифейс на 95 нужен)
а сейчас ты в него льёшь воду
ты говоришь о недостаточной строгости
изначальной