@prophp7

Страница 79 из 1387
Aleh
25.11.2016
21:03:03
двинутый чувак?)
ну да, он сам себе противоречит немного

или не очень немного

Dmitriy
25.11.2016
21:03:23
Sergey
25.11.2016
21:03:40
ну это другой вопрос.
это главный вопрос

Google
Aleh
25.11.2016
21:03:48
предлагает отказаться от процедурщины, но не объясняет чем его код не процедурщина и чем она поможет

Aleh
25.11.2016
21:04:13
стоит смотреть ?
ну хз, если посмотреть вечером нечего

я за едой смотрел

Sergey
25.11.2016
21:04:21
Aleh
25.11.2016
21:04:28
еще не посмотрел

я вот object thinking не читал

Roman
25.11.2016
21:04:33
BaseParser - просто с потолка

Aleh
25.11.2016
21:04:40
поэтому вчера решил наверстать упущенное)

Sergey
25.11.2016
21:05:05
BaseParser - просто с потолка
вопрос, вот эти детекторы, они где юзаются?

Roman
25.11.2016
21:05:22
в наследниках

Sergey
25.11.2016
21:05:31
то есть ты можешь сделать их... protected?

Roman
25.11.2016
21:05:34
в родителе возвращают false

Google
Roman
25.11.2016
21:05:53
lf

да

Sergey
25.11.2016
21:06:01
окей, идем дальше

можешь хотя бы примерно описать что на входе

html какой-то?

Roman
25.11.2016
21:06:32
да

страницы допустим авито

Sergey
25.11.2016
21:06:45
окей

дальше

Roman
25.11.2016
21:06:52
ну абстрактно совсем

Sergey
25.11.2016
21:06:55
что они возвращают? всегда bool или еще чего?

Dmitriy
25.11.2016
21:07:03
это главный вопрос
class Modul{ public function getUrlRedirect(){ // тут чтото } // и 5 других функций } class Pocket extends Modul{ } Это нормально? или как тогда сделать модульную систему без extends . Что бы я с генерировал модуль и он уже отдавал базовые данные

Roman
25.11.2016
21:07:07
3 детекста всегда бул

Aleh
25.11.2016
21:07:21
мне больше его интервью с Дэвидом Вэстом понравилось
хотя пример второго чувака про описание картины пикасо простым текстом норм)

Roman
25.11.2016
21:08:14
возвращает массив

Dmitriy
25.11.2016
21:08:30
не нормально
Как реализовывать модульную систему ?

Sergey
25.11.2016
21:08:31
то есть это не детектор, это экстрактор

Google
Roman
25.11.2016
21:08:36
да

Sergey
25.11.2016
21:08:40
да
interface Detector { public function detect(string $html): bool; } interface Extractor { public function extract(string $html): array; }

Aleh
25.11.2016
21:10:27
POJO это то, где нет инкапсуляции :)))

Sergey
25.11.2016
21:10:43
POJO это то, где нет инкапсуляции :)))
эм... не помню такого... ну да ладно)

Roman
25.11.2016
21:11:38
тогда лучше абстрактый класс

Aleh
25.11.2016
21:12:04
хотя второй чувак за сеттеры топит

Sergey
25.11.2016
21:12:05
но интерфейсы норм? на вход html на выход либо bool либо данные

Aleh
25.11.2016
21:12:08
странные они короче

Roman
25.11.2016
21:12:12
абстрактные методы обязательны к реализации

Sergey
25.11.2016
21:12:23
абстрактные методы обязательны к реализации
это понятно, у меня другая тема в голове

Roman
25.11.2016
21:12:28
придется имплементить постоянно

Aleh
25.11.2016
21:12:30
странные они короче
https://i.ytimg.com/vi/c3Fmue_fe-g/hqdefault.jpg

Sergey
25.11.2016
21:12:48
придется имплементить постоянно
там один метод, ты мне скажи норм интерфейсы? покрывают задачу?

Roman
25.11.2016
21:13:30
если в первый интерфес поместить 3 метода детека, то наверно да

Sergey
25.11.2016
21:13:39
а теперь ход конем

....рано написал... 2 минутки

Roman
25.11.2016
21:13:53
но нужно чтоб 4 метод возвращал не пустой массив

Extractor

Google
Sergey
25.11.2016
21:14:37
ну "не пустой массив" это тогда делай какой-то тип вроде Result

https://gist.github.com/fesor/fc298d4a97eb7d27858f0668f237a79a

удобно тестить, удобно расширять

юзаешь всегда только то что нужно

Dmitriy
25.11.2016
21:16:54
напиши ТЗ
Есть проект, его дадача отпрашивать огромное кол-во api. Постоянно нужно пилить новые коннекты. Проект разделен на модули . У каждого модуля свои параметры авторизации, настройки. Один сервис требует логин пароль, а другой настройки подключения. Получается EDA. Вот как тут правильно создать структуру архитектуру. что бы я мог за мину установить базовый модуль. и начать работать с другим api .

Sergey
25.11.2016
21:17:14
> Проект разделен на модули . У каждого сервиса уже неконсистентность требований

> У каждого сервиса свои параметры авторизации, настройки. Один сервис требует логин пароль, а другой настройки подключения. сделай интерфейс Connector

Fayozjon [CybernatiC]
25.11.2016
21:17:41
Вы опять ту тему начали?))

Sergey
25.11.2016
21:17:45
и пихай в класс конкретную реализацию

полиморфизм!

Admin
ERROR: S client not available

Roman
25.11.2016
21:17:48
согласен, спс за конкретику

Sergey
25.11.2016
21:18:20
согласен, спс за конкретику
вообще то что ты описал в "нормальных" языках решается функциями а не классами.

export interface Extractor { (html: string): Array; }

и тогда

можно будет вместо ажно целого класса тупо юзать функции

но это typescript, ненастоящий язык

в php для структутизации кода у тебя только классы...

а потому приходится сильно больше писать что бы было норм

Roman
25.11.2016
21:22:02
можно было в твоем примере использовать trait с 3 методами детекторов, и имплементить Extract

Google
Roman
25.11.2016
21:22:33
зато не нужное писать 3 класса

для реализации детектов

Sergey
25.11.2016
21:22:44
тебе IDE сгенерит 80% кода

ленивый

Sergey
25.11.2016
21:22:59
зато потом тотальный контроль над ситуацией

мноооого маленьких классов

не облее двух экранов длиной

(без читерства в виде 24" вертикально стоящих экрана)

Roman
25.11.2016
21:23:44
final для этих классов нельзя использовать

может быть ситация, когда парсер наследует парсер

немного расширяя его

Sergey
25.11.2016
21:24:15
сделаешь новый класс

вместо того что бы наследоваться

Roman
25.11.2016
21:24:27
но это скорее исключительные ситуации

Fayozjon [CybernatiC]
25.11.2016
21:24:28
Да вернулись к той теме

Roman
25.11.2016
21:25:04
сделаешь новый класс классы будут повторять код

не очень хорошо

Sergey
25.11.2016
21:25:56
но это скорее исключительные ситуации
final class ExtendedMyExtractor implements Extractor { private $base; public function __construct(Extractor $base) { $this->base = $base; } public function extract(string $html): string { $result = $this->base->extract($html); // do something with result return $result; } }

это называется декорация

Dmitriy
25.11.2016
21:27:10
@fes0r что почитать о минусах наследования ?

Sergey
25.11.2016
21:27:36
http://www.javaworld.com/article/2073649/core-java/why-extends-is-evil.html

Страница 79 из 1387