@prophp7

Страница 241 из 1387
Евгений
10.02.2017
15:57:21
не везде такие доки шикарные

Sergey
10.02.2017
15:57:33
не везде такие доки шикарные
может тогда не надо юзать нонэйм фреймворки?

потому новичкам я обычно рекомендую фреймворки из top 3 популярных

Евгений
10.02.2017
15:57:54
никто там не обязан рассказывать о паттернах в доках )))

Google
Sergey
10.02.2017
15:58:05
а то начинаются про сингелтоны

Евгений
10.02.2017
15:58:22
для полноты картины пригодятся

Sergey
10.02.2017
15:58:49
для полноты картины пригодятся
сначала инкапсуляцию. Потом закон деметры. Потом полиморфизм.

потом принцип подстановки барбары лисов, потом SRP и Open/Close, потом сегрегацию интерфейсов и инверсию зависимостей

потом coupling/coheasion

потом принципы GRASP

и вот потом паттерны

тогда все будет последовательным

Артур Евгеньевич
10.02.2017
16:00:04
я вот кстати до конца не въехал чем SRP отличается от сегрегации интерфейсов это по сути одно и тоже только для калссов и интерфейсов?

Sergey
10.02.2017
16:00:16
SRP - у каждого класса должна быть одна причина для изменений

IS - каждый интерфейс должен представлять какую-то одну операцию. Что бы код, который завязан на эти интерфейсы использовал ВСЕ их методы а не только часть.

Google
Sergey
10.02.2017
16:02:18
ну то есть SRP про объект, а ISP про то что объекту надо давать ровно то что ему нужно, и не методом больше

Артур Евгеньевич
10.02.2017
16:02:53
да хорошо объяснил

Sergey
10.02.2017
16:02:55
представь что ты вызвал водопроводчика а он тебе с порогу "а я еще могу электрику делать и плитку ложить"

Артур Евгеньевич
10.02.2017
16:03:00
я неверно S понимал значит

Sergey
10.02.2017
16:03:02
а ты такой "да не надо мне"

я неверно S понимал значит
большинство не понимают)

в SOLID это самый сложный принцип для восприятия

ну может на уровне open/close

а вот L - самый простой

хотя обычно кажется что наоборот

Артур Евгеньевич
10.02.2017
16:03:51
я думал что имеется ввиду что класс должен иметь только одно "предназначение" и соответственно не вклчать лишнего

Артур Евгеньевич
10.02.2017
16:04:20
а вот L - самый простой
хаха ну не скажи, большинство так и не поняло почему квадрат не является наследником прямоугольника)

Sergey
10.02.2017
16:06:35
есть такой вот принцип)

Be conservative in what you do, be liberal in what you accept from others (often reworded as "Be conservative in what you send, be liberal in what you accept").

Артур Евгеньевич
10.02.2017
16:08:12
не уловил нить к чему это)

Sergey
10.02.2017
16:08:35
что такое инварианты объекта знаешь?

Артур Евгеньевич
10.02.2017
16:10:57
именно объекта нет

я знаю инвариант как в условие в цикле

Google
Евгений
10.02.2017
16:12:53
сдается мне это связяно с непротиворечивым состоянием объекта

Артур Евгеньевич
10.02.2017
16:13:50
мне вот интересно правильно ли я понимаю инкапсуляцию)

если вкратце то для меня инкапсуляция это разделение публичного интерфейса и реализации в каком либо компоненте

Евгений
10.02.2017
16:16:30
парочка .hpp и .cpp - вот тебе разделение интерфейса и реализации

Артур Евгеньевич
10.02.2017
16:18:06
ну я имел ввиду логическое разделение а не способ хранения)

такое определение вот нашел, близко мне

Инкапсуляция (encapsulation) — это фундаментальная объектно-ориентированная концепция, позволяющая упаковывать данные и поведение в единый компонент с разделением его на обособленные части — интерфейс и реализацию. Последнее осуществляется благодаря принципу изоляции решений разработки в ПО, известному как сокрытие информации (англ. information hiding).

Nick
10.02.2017
16:30:27
чат, а как правильно делаются штуки типо транзакций, но не связанных с базой. Т.е. например мне надо один за другим провести 2 платежа, а потом зарегистрировать юзера. Если на одном из этапов фейл - всё должно фейлиться. Куда копать, чтобы не городить костыли?

Евгений
10.02.2017
16:31:25
так а факт платежа не регистрируется в базе чтоли?

Nick
10.02.2017
16:32:16
регистрируется да

Артур Евгеньевич
10.02.2017
16:33:07
ну вопервых где то нужно состояние "транзакции хранить" как вариант в базе или в сессии

Nick
10.02.2017
16:33:48
Ну это всё выполняется в рамках одного реквеста по сути. Т.е. чувак сабмитит форму и всё пошло-поехало

Nick
10.02.2017
16:34:03
т.е. если я нагорожу там ифов это будет норм ?

Dan
10.02.2017
16:34:15
Временная база не?

Nick
10.02.2017
16:39:59
Временная база/таблица ок, а по коду как это красиво разруливать?

т.е. если я нагорожу там ифов это будет норм ?

Евгений
10.02.2017
16:45:47
слабо понимаю. 2 платежа провести, а потом зарегать пользователя. первый прошел, второй не прошел. это же не отменяет 1й платеж?

или надо делать откат платежа №1 в платежной системе?

Nick
10.02.2017
16:50:57
Откат

Да

Google
Евгений
10.02.2017
16:55:06
Паттерн Command чтоб не городить костыли

платеж1 - выполнился, кладешь объект команды в стек платеж2 - выполнился, кладешь объект команды в стек платеж3 - обломался. pop() по стеку и ->undo() каждому объекту

Sergey
10.02.2017
17:01:22
если вкратце то для меня инкапсуляция это разделение публичного интерфейса и реализации в каком либо компоненте
нууу... инкапсуляция это когда у тебя данные и логика обработки оных засунута в капсулу

Евгений
10.02.2017
17:04:06
грубо говоря черный ящик. знаешь что ему скормить и что выйдет из него на выходе. как оно это делает = тебя не волнует.

Sergey
10.02.2017
17:05:36
замечу что "сломать инкапсуляцию" значит достать кусочек состояния что бы с ним поработать. То есть геттеры ломают ее

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

Артур Евгеньевич
10.02.2017
18:17:48
Если я не могу получать свва

Admin
ERROR: S client not available

Артур Евгеньевич
10.02.2017
18:25:19
Типо делать метод convertToarray?

Aleksandr
10.02.2017
18:25:40
Так а как мне например вывести модель в таблицу html
достать, чтобы поработать (в терминах бизнес-логики), а не достать, чтобы отобразить

Артур Евгеньевич
10.02.2017
18:25:54
Если такто кому он должен принадлежать, мапперу?

Инджектить объект который будет получать представления в нужной форме из модели?

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

Артур
10.02.2017
18:27:18
У модели должен быть метод, который вернет некоторое объектно-массивное представление. Этот метод вызовется в контроллере, контроллер передает во вьюху, вьюха отображает

Очевидное и логичное решение, как по мне

Инкапсуляция - можно все нафиг запрятать и сделать публичным только данный метод

Артур Евгеньевич
10.02.2017
18:28:24
Но модель не должна заниматься конвертацией самой себя

Srp же)

Google
Артур Евгеньевич
10.02.2017
18:28:37
Как меня научили

Артур
10.02.2017
18:29:59
Таблица - это БДшная таблица или таблица принадлежит какому-то объекту?

прощу прощения, если это было разъяснено выше

Артур
10.02.2017
18:31:32
Ну если надо сгенерировать HTML таблицу на основе одной записи из БД, то это больше относится все-таки к модели, потому что это очень большая привязка к данным именно этой конкретной модели

Артур Евгеньевич
10.02.2017
18:33:34
Ну хз хз, мне все таги кажется что кто то другой должен заниматься этим

Посмотрим что скажут эксперты))

Артур
10.02.2017
18:34:09
то есть кто-то другой должен знать все то же самое о модели?

Артур Евгеньевич
10.02.2017
18:34:58
Ну вот пока я предложил вариант с компощицией

Чтобы был у модели объект реализующий её конвертацию

Хотя блья

Все равно получается что со стороны клиента этим модель заниматься будет

Думаю тут все таки ДатаМапер нужен

Артур
10.02.2017
18:37:03
А другие модели будут юзать датамапер еще?

Алексей
10.02.2017
18:42:26
http://joxi.ru/KAgYMLRuPq4Wml вот тут заменить, т.к. query1 возвращает только 1 строку, как можно от foreach избавиться?

Артур
10.02.2017
18:42:51
$row = $query1->rows[0];

Алексей
10.02.2017
18:43:41
а если к полю name? rows[0]['name']?

Артур
10.02.2017
18:44:01
да

там result & result1, не запутались?

может в этом проблема

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