@phpclubru

Страница 801 из 956
Pavel
11.02.2019
20:49:04
Я призываю понять почему ты не нарушаешь DIP когда не плодишь интерфейсы на каждый класс.

Konstantin
11.02.2019
20:49:46
Но есть класс Animal, и есть Dog и Cat, которые его расширяют. Метод принимает Animal. Подойдут ли Dog или Cat?
Подойдут, но Animal не является абстракцией, согласно DIP нужен интерфейс

ПЛОХО class A {} class B { public function method(A $arg) { ... } } ХОРОШО AInterface {} class A implements AInterface {} class B { public function method(AInterface $arg) { ... } }

Google
Den
11.02.2019
20:50:27
Pavel
11.02.2019
20:51:02
Konstantin
11.02.2019
20:51:24
Но абстракция - это не интерфейс, сказали же.
Это либо интерфейс либо абстрактный класс, но никак не обычный класс

Pavel
11.02.2019
20:52:59
я выше все это уже упоминал, сказали что это получится говнокод
Самый лютый говнокод получается когда за дело берется фанатик со словами "сейчас я это все перепишу без говнокода"

Konstantin
11.02.2019
20:53:24
Не имеет смысла без объяснений какой смысл вкладывается в эти классы.
Вся суть в этой строчке public function method(AInterface $arg) { ... } Здесь обязана быть абстракция, т.е. либо интерфейс либо абстрактный класс, но никак не обычный класс

Den
11.02.2019
20:53:28
Ну у меня класс EloquentModel - он является абстракцией над моделью, а реализация - это инстанс

Aleksandr
11.02.2019
20:54:08
Если ты уже для себя нашелт ответ смысл дальше вести дискуссию?

Aleksandr
11.02.2019
20:54:20
Нет истины.

Pavel
11.02.2019
20:54:21
Google
Konstantin
11.02.2019
20:54:31
Нет не обязана. Прекратите принципы формально переводить в синтаксические конструкции кода.
Ок, Формулировка DIP: Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Aleksandr
11.02.2019
20:55:50
Огласи ответ, я его не нащюпал
Ну тебе люди говорят что не везде нужны интерфейсы и ты начинаешь с этим явно спорить. Значит ты для себя уже решил, что везде нужны интерфейсы.

Artem
11.02.2019
20:56:10
Это либо интерфейс либо абстрактный класс, но никак не обычный класс
тут довольно важно понимать задачу. Там, где создается продукт и важны оптимизации или просто срочный релиз, в итоге - можно наговнякать и это будет супер решение потому, что задача была в этом. (а любая оптимизация производительности -это еще тот говнокод...) Там где есть работа по найму, а для большинства -это именно продажа своего кода, а не продукта, какой -то компании -важна чистота, надежность и поддержваемость этого кода. Условия в которых создается код -тоже абстракция, и контракт в виде классического интерфейса подразумевает требования к результату. Но как ни крути в 99% случаев когда создается код, лучше создать лишний файл с интерфейсом, а не делать этого можно только в узких и хорошо обдуманных случаях. Остальное (как собственно и все это -просто демагогия)

Pavel
11.02.2019
20:56:57
То что в одном проекте является абстракцией - в другом проекте не будет абстракцией.

Pavel
11.02.2019
21:00:13
В php нет модулей, значит и никакого принципа D нет ?

Konstantin
11.02.2019
21:00:54
Мы переходим в область философии, без кокретных примеров не придёт понимание

Artem
11.02.2019
21:01:38
В php нет модулей, значит и никакого принципа D нет ?
ну в этих терминах даже файл с классом можно считать модулем, поскольку он создает пространство имен, это же концептуально не отличается от модулей в js реализованных замыканием. Просто эти файлы скорее классы, чем модули, но по сути одна хрень _)

Konstantin
11.02.2019
21:01:58
Вот именно, что для вас модуль?))

dypa
11.02.2019
21:02:01
Pavel
11.02.2019
21:02:53
Мы переходим в область философии, без кокретных примеров не придёт понимание
Ну вот для понимания и надо перелопатить пару десятков проектов, чтобы хорошо научиться чувствовать что есть абстракция а что не есть абстракция.

Иногда даже это можно понять спустя полгода когда наконец видна предметная область.

И куча говнокода уже работает на проде

Den
11.02.2019
21:03:56
По разному

Pavel
11.02.2019
21:04:04
Что для вас сбтракция? Интерфейс, абстрактный класс, обычный класс? Что?
Абстракция это элемент языка общения между ООП господами в проекте.

Вот например пишете вы построитель графиков по точкам для восьмиклассников. У вас есть класс Dot { float $x; float $y; } и это никакая не абстракция.

Google
Aleksandr
11.02.2019
21:06:31
Один фиг модулей в пхп нет.

Pavel
11.02.2019
21:06:53
Потом к вам пришли студенты и сказали что может график то быть в трехмерном пространстве. И у вас появилась абстракция сразу interface Dot и классы TwoDDot implements Dot и ThreeDDot implements Dot

Pavel
11.02.2019
21:07:38
Потом пришли старшекурсники и сказали что координаты то могут быть еще полярные. И вы плодите еще больше абстракций.

dypa
11.02.2019
21:08:02
Вот именно, что для вас модуль?))
слой, пакет, неймспейс...

Den
11.02.2019
21:08:34
слой, пакет, неймспейс...
Тип аддона - но это как раз конкретика

dypa
11.02.2019
21:09:15
Pavel
11.02.2019
21:09:26
Потом пришли физики и сказали: "Мы хотели через вашу замечательную библиотеку отстроить модель наших комет но тут выяснилось что эти точки совершенно не учитывают кривизну пространства-времени", тут вы берете увольняетесь и идете писать сайтики.

Pavel
11.02.2019
21:10:59
Паша, поясни пожалуйста почему точка конкретна?
Конкретный класс двумерной точки в декартовых координатах.

Не точка конкретна а класс точек конкретен

Конкретная точка это уже объект.

Aleksandr
11.02.2019
21:11:47
слой, пакет, неймспейс...
я так понимаю под неймспейсом понимается не те неймспейсы которые в пхп, а пространста имен с возможность импортировать туда и экспортировать оттуда?

Den
11.02.2019
21:12:37
Конкретный интерфейс Конкретный класс Конкретный инстанс

Тут нет абстракций

Pavel
11.02.2019
21:14:02
Конкретный интерфейс Конкретный класс Конкретный инстанс
Конкретный интерфейс - это абстракция всех классов которые его имплементируют.

Google
Aleksandr
11.02.2019
21:14:18
Потому что пыховые неймспейсы это просто сахар над копипастом. А пространство имен остается одно.

Den
11.02.2019
21:16:12
Смотри: 'MyRepository' - строка. Это абстракция над файлом класса MyRepository

Как биндятся классы в ларке? abstract -> concrete

Наши имена - это наши абстракции

dypa как тебя зовут? Я не могу тебя так называть!

Pavel
11.02.2019
21:31:06
Дайпа его зовут

Den
11.02.2019
21:33:39
Дайпа его зовут
Спасибо. Я буду по-русски писать.

ustasby
11.02.2019
21:38:33
Дайпа его зовут
вот это откровение ))

dypa
11.02.2019
21:39:14
dypa как тебя зовут? Я не могу тебя так называть!
мы вроде не на сайте знакомств )))

Den
11.02.2019
21:40:03
dypa
11.02.2019
21:40:21
вот это откровение ))
я удивлен, это новое прочтение из 4х мне уже извесных

ustasby
11.02.2019
21:42:09
я удивлен, это новое прочтение из 4х мне уже извесных
есть еще варианты кроме дура и дупа?

dypa
11.02.2019
21:44:05
есть еще варианты кроме дура и дупа?
дыра, дипа из тех, что я слышал или видел, человеческая фантазия не имеет предела

dypa
11.02.2019
21:47:11
а на самом деле?
я не ограничиваю людей в их понимании 4х букв.

Terminator
11.02.2019
22:37:24
@Hvarts будет жить. Поприветствуем!

hvarts
11.02.2019
22:37:58
всем привет

ребят, кто может с регуляркой помочь, уже 3 часа над ней сижу и ничего не выходит

Google
hvarts
11.02.2019
22:41:24
89293661500:q2430173|251587385|М|20|(Russia)|Omsk|(2)|242|0|0 то, что нужно вытащить поместил в ()

Den
11.02.2019
22:41:46
Это строка?

hvarts
11.02.2019
22:41:52
да

Den
11.02.2019
22:42:17
89293661500:q2430173|251587385|М|20|Russia|Omsk|2|242|0|0

Какие варианты стран и цифр?

Дай еще строки

hvarts
11.02.2019
22:43:22
79087999669:polina5566|435885501|Ж|14|Russia|Saint Petersburg|279|2|0|0, 89509003848:8955056SWD|488157595|М|18|USA|Los Angeles|0|0|0|0, +37360582558:05042004|517813746|М|14|||19|1|0|0, 89181690790:KALINKIN2003|522917428|М|18|USA|Moscow|0|1|0|0, +79145619378:1523639qaZ|379645586|М|17|Russia||142|10|0|0, 89689654432:zombie333|431804596|М|17|Russia|Moscow|36|0|0|2, +380713158958:shkolnik|490442916|М|20|Russia|Saint Petersburg|2|1|0|0

Из стран, нужно только Russia вытаскивать

Den
11.02.2019
22:49:39
https://regex101.com/r/jgZUZB/1

hvarts
11.02.2019
22:51:30
https://regex101.com/r/jgZUZB/1
спасибо большое!

Den
11.02.2019
22:52:01
+

я не ограничиваю людей в их понимании 4х букв.
Есть тупая функция https://github.com/Piterden/vue-crossword/blob/master/src/components/BuilderPage.vue#L341-L361 Надо уменьшить количество 2х и 3х буквенных слов В идеале - сделать его регулируемым Виды симметрии будут переключаться, надо не забывать об этом. Поможешь?

Мне алгоритм надо

В чате JS спрашивал

Aleksandr
12.02.2019
01:01:53
Из стран, нужно только Russia вытаскивать
А не проще тут было по | сплитить и проверять?

Den
12.02.2019
01:10:45
generateGrid () { this.blanks = [] // eslint-disable-next-line no-magic-numbers const blankProbability = 1 / 3 const halfWidth = Math.round(this.width / 2) const halfHeight = Math.round(this.height / 2) for (let x = 1; x <= halfWidth; x += 1) { for (let y = 1; y <= halfHeight; y += 1) { if (Math.random() > blankProbability) { continue } this.blanks.push( `${x}:${y}`, `${this.width - x + 1}:${y}`, `${x}:${this.height - y + 1}`, `${this.width - x + 1}:${this.height - y + 1}`, ) } } },

Страница 801 из 956