
Neo
15.05.2017
08:50:29
не сильно вникая в реализацию
а нет? =)

Aleserche
15.05.2017
08:50:38
есть какой-то эталон?

Golodnyi
15.05.2017
08:51:51
мне недавно рест апи понадобился, я решил с гитхаба взять только роутинг, остальное там по сути бизнес логика и ничего особо накручивать не нужно, middleware всякие руками легко делаются

Google

Golodnyi
15.05.2017
08:53:58

Neo
15.05.2017
08:55:32
есть какой-то эталон?
в последнее время работал только с Laravel (c Yii работал лет 5 назад, ничего не помню. С Zend - лет 7 назад, помню только название). Так что сравнить не с чем.

Aleserche
15.05.2017
08:56:53
я плотно с mcv работал только в asp.net mvc 5/6
года 3-4 назад

Golodnyi
15.05.2017
08:58:53
я работал с кучей фреймворков, хорошее впечатление никто не оставил, ну ларавель приятный более менее, но его миллиард паттернов - какая то натянутая фигня

Aleserche
15.05.2017
08:59:15
т.е.? Каких паттернов?

Golodnyi
15.05.2017
08:59:25
на которых он построен
мне кажется не в каждой книге о паттернах столько описано)

Dmitriy
15.05.2017
08:59:46

Aleserche
15.05.2017
08:59:47
типа фасады, сервисы?

Golodnyi
15.05.2017
09:00:08
да, все их перечислять пожалуй не буду

Google

Golodnyi
15.05.2017
09:01:52

Dmitriy
15.05.2017
09:02:12

Golodnyi
15.05.2017
09:02:31
роутинг по сути единственное, что самому писать довольно проблематично и глупо, много букв в коде, остальное уже частные случаи

Aleserche
15.05.2017
09:02:46

Golodnyi
15.05.2017
09:02:52
плохо то что pdo без абстракций не очень юзабелен

Dmitriy
15.05.2017
09:03:24

Golodnyi
15.05.2017
09:04:04
то что DI дает слабосвязанный код, эт не потому что без него нельзя, а потому что он заставляет писать правильно) без него просто пишут не всегда правильно и поэтому отсутствует слабая связанность
но конеретно в ларавель кстати DI не навязывается, писать код минуя его можно и новички наверняка так и делают, поэтому он там для красоты
в том же ангуляр попробуй пройти мимо DI, ага
*

Dmitriy
15.05.2017
09:06:18

Aleserche
15.05.2017
09:07:39

Dmitriy
15.05.2017
09:07:54

Golodnyi
15.05.2017
09:08:29

Dmitriy
15.05.2017
09:09:16
И везде все переписывать где вызов орм ?

Golodnyi
15.05.2017
09:10:49
ну не надо же напрямую юзать класс

Google

Golodnyi
15.05.2017
09:10:53
надо его обертку юзать

Dmitriy
15.05.2017
09:12:08
аа. будешь в обертки менять вызовы на другую орм ?

Golodnyi
15.05.2017
09:15:00
ну яж про фабрику писал выше
ну и вот эти ситуации давольно смешные "что если ты захочешь ОРМ поменять", не бывает такого, эт страшилки, которые придумали для продвижения невостребованных продуктов)

Dmitriy
15.05.2017
09:17:18
Что делать если завтра мы поняли что нам нее нужна монга и нужен sql ?

Golodnyi
15.05.2017
09:18:36
оу, я полагаю ты часто менял основные вещи в проекте? Сочувствую)

Dmitriy
15.05.2017
09:18:42
требования изменились

Golodnyi
15.05.2017
09:18:53
сменить бд эт не тоже самое что изменить орм) прям не рядом)

Dmitriy
15.05.2017
09:20:12
Ну окей. нас больше не устраивает AR
мы хотим на DM перейти

Dmitriy
15.05.2017
09:20:34
что тогда делать ?
Надеюсь не нужно описывать чем плох AR

Golodnyi
15.05.2017
09:21:07
не знаю о чем ты, но я все еще настаиваю на использовании абстракций

Dmitriy
15.05.2017
09:21:23
Про di и интерфейсы

Aleserche
15.05.2017
09:21:30

Dmitriy
15.05.2017
09:22:26

Golodnyi
15.05.2017
09:22:41
ты понимаешь зачем DI были придуманы? Ну типа чтоб в методах класса никто зависимости не создавал, а все зависимости шли через конструктор, либо какой то иной подход, но никакой зависимости внутри объекта, в чем проблема следовать этому принципу без di?

Neo
15.05.2017
09:22:58

Google

Dmitriy
15.05.2017
09:23:12
DataMapper

Neo
15.05.2017
09:23:20
о, благодарю

Golodnyi
15.05.2017
09:23:28
di это как orm, его создали чтоб не допускали ошибок при написании sql кода, точно так же di не дает шанса создать плохие зависимости, но в ларавель это для красоты, как уже сказал

Dmitriy
15.05.2017
09:27:20

Aleserche
15.05.2017
09:28:24
так этим же контейнер занимается

Golodnyi
15.05.2017
09:29:38
я год на ларавель точно уже не писал, мб там много чего изменилось, но мне просто есть с чем сравнить. В некоторых вещах где есть DI, если ты не станешь его использовать, уже через пару часов ты сам поймешь что сделал что то не так, потому что код будет крайней степени эпичности, а в худшем случае он даже не заработает, потому что ты руками все зависимости не разрулишь, в ларавель я DI никогда не использовал сознательно, только когда какие нить сервис провайдеры пишешь, там просто инициализация и di слиты, поэтому там это не обойти, а в других местах писать без di в ларавель довольно легко и не будет никаких намеков, что ты делаешь что то не так. Точки сам расставишь)

Dmitriy
15.05.2017
09:31:17
хех. в yii2 тоже не использовал di ?

Golodnyi
15.05.2017
09:31:41
да я на нем полторы строки кода писал, я даже не помню что там в нем

Admin
ERROR: S client not available

Dmitriy
15.05.2017
09:32:15
за-то спорил со мной долго на тему yii2 когда-то =(

Golodnyi
15.05.2017
09:32:34
в пхп по серьезному di я нигде не юзал, на сколько я помню
ну то что что-то убогое, могу спорить долго) это же субьективное мнение
там такой мерзкий синтаксис миграций был, а я их так много писал, страшное дело
все что я помню о yii2, это какой то минимальное количество статически возможных анализов кода, в следствии чего минимальное количество помощи от редактора, но мб тот человек, с кем я вел проект, просто в каком то не том стиле делал проект, но во всяком случае моё мнение он сложил)
у меня кстати с самого утра в браузере открыта эта вкладка (https://www.youtube.com/watch?v=bPp3lAkuMEY), весь день не могу отвлечься, чтоб посмотреть


Dmitriy
15.05.2017
09:42:51
я год на ларавель точно уже не писал, мб там много чего изменилось, но мне просто есть с чем сравнить. В некоторых вещах где есть DI, если ты не станешь его использовать, уже через пару часов ты сам поймешь что сделал что то не так, потому что код будет крайней степени эпичности, а в худшем случае он даже не заработает, потому что ты руками все зависимости не разрулишь, в ларавель я DI никогда не использовал сознательно, только когда какие нить сервис провайдеры пишешь, там просто инициализация и di слиты, поэтому там это не обойти, а в других местах писать без di в ларавель довольно легко и не будет никаких намеков, что ты делаешь что то не так. Точки сам расставишь)
Как раз я разрулю все зависимости и заменю любые реализации всего чего нужно. Ибо любой фрейм сам подставит подходящую реализацию . Это самая прелесть когда нужно что-то поменять и не нужно менять пол проекта
Цель di избежать самокофигурирующихся объектов т.к. это снижает возможность их повторного использования и тестирования.
DI столь же уместен как и фабрика. В случае с DI код получается !прозрачнее! обычно нет необходимости явного требования объекта создание необходимых экземпляров проходит за кулисами. К тому же проще сконфигурировать одно правило, чем добавить фабрику.


Golodnyi
15.05.2017
09:43:53
ну яж не говорил что di это плохо
хотя это определенно плохо, в силу того, что он держит в уме то, что может не пригодиться, но это мелочи до какого то момента, его плюсы несомненно хороши
я говорил лишь что в ларавель di это вот именно как фабрика, что то опциональное, а не стена которую нельзя обойти

Dmitriy
15.05.2017
09:45:08
к сожалению в ларавел это так =(

Google

Aleserche
15.05.2017
09:50:44

Golodnyi
15.05.2017
09:51:08
принципиально?

Aleserche
15.05.2017
09:52:18
нет, просто уточнил. Есть же lazy реализации для контейнеров

Golodnyi
15.05.2017
09:54:32
мб

Artem
15.05.2017
10:03:28
подскажите, как в миграции добавить значение в существующий enum? В документации написано, что никак (лол). Какой костыль посоветуете? Я даже согласен удалить и создать заново поле, но в пределах одной играции, похоже, это сделать нельзя

Aleserche
15.05.2017
10:05:13
в sql это примерно так ALTER TABLE table_name MODIFY COLUMN column_name ENUM('foo','bar','new');

Artem
15.05.2017
10:05:43
ага, ответ на второй вопрос (удалить и пересоздать) я нашёл - надо просто разделить удаление и создание в разные вызовы Schema::table()

Aleserche
15.05.2017
10:06:08
через DB::statement("ALTER TABLE table_name MODIFY COLUMN column_name ENUM('foo','bar','new');")

Artem
15.05.2017
10:06:25

Golodnyi
15.05.2017
10:08:39
$table->enum(...)->change();
че то такое там было
или ты про это говоришь, что нельзя?

Artem
15.05.2017
10:09:48
для enum не реализован change()

Golodnyi
15.05.2017
10:10:31
ну drop и create тогда
я enum не люблю, он всегда стринг, эт какой то геморой, а не тип

Aleserche
15.05.2017
10:12:06
это потому что в php нет типа enum

Golodnyi
15.05.2017
10:12:39
да не, в пхп вообще ниче нету, а вот в самом мускуле енум не хранит же цифры
нельзя там хранить например signed byte или еще чего другого
не рациональный тип, крайней степени

Artem
15.05.2017
10:13:38
мускул как-раз бинарь и хранит для енумов
1 или 2 байта используется в зависимости от количества вариантов в енуме