
Sergey
29.01.2017
15:22:09
сейчас 504 ошибка, Gateway Timeout

Алексей
29.01.2017
15:22:23
Логи?

Sergey
29.01.2017
15:25:05
походу sql

Nick
29.01.2017
15:38:37
Парни, это ненормально ведь держать в контроллере функцию, которая достает последний добавленный сайт в базу (Имеется сущность Site)? Подозреваю, что в файл Repository/SiteRepository.php ? Направьте меня, пожалуйста

Google

Nick
29.01.2017
15:39:33
метод*

Sergey
29.01.2017
15:41:41
а для чего используется?
просто для UI?
короч простое правило - все методы репозитория должны либо ничего не возвращать (add, remove например) либо возвращать не null и не массив)
в целом это только те штуки которые используются в бизнес логике
"поиск" что бы отобращить список чего-нибудь - это UI логика

Nick
29.01.2017
15:43:25
У меня контроллер для генерации сайдбара, в который достаются из разных таблиц данные. В контроллере реализована пара методов типа getLastSite(), которые достают нужную инфу из БД

Sergey
29.01.2017
15:43:41
ну вынеси в отдельные сервисы
но не в репозиторий
и покури про Single Reponsibility

Nick
29.01.2017
15:44:39
Спасибо?

Sergey
29.01.2017
15:44:48
оно может и занудство но если проект разрастается и ты хочешь контролировать что происходит - полезно соблюдать все SOLID принципы
(и нарушать их там где лень уже)

Google

Nick
29.01.2017
15:47:05
То есть в SiteRepository.php стоит реализовать метод для удаления записи по id, но никак не для получения списка последних 10 сайтов?

Sergey
29.01.2017
15:47:37
ну как.... зависит от уровня лени и как много у тебя выборок
в целом вся соль в сегрегации интерфейсов и обязанностей. Например если ты запихнешь все это в репозиторий и даш кому-то попользоваться что бы тот мог взять 10 последних сайтов, то он как бы получает возможность сайты и добавлять и удалять
слишком много власти для одного объекта
в сферическом вакууме зависимости объектв должны предоставлять ровно те методы, которые юзаются и не методом больше
но настолько загоняться частенько бывает лениво

Salavat
29.01.2017
15:49:28
Это ж сколько сервисов должно быть

Sergey
29.01.2017
15:49:35
много много много
есть еще хитрости
например - нотификации
у тебя в системе например есть 20 нотификаций различных
пилить 20 сервисов как-то не прикольно, учитывая что они будут копией друг дружки
так?

Salavat
29.01.2017
15:50:14
Угу

Sergey
29.01.2017
15:50:57
что можно сделать - один сервис нотификатор, который имеет метод
public function send(Notification $notification)
{
$swiftMailerNotification = $notification->prepare($this->twig, $this->someOtherStuff);
$this->mailer->send($swiftMailerNotification);
}
теперь у нас по объекту на каждую нотификацию и они прекрасно знают как себя "отрендрить".
и только один сервис который уже будет отправлять нотификации
точно так же можно делать и с выборками
еще можно поскрипеть головой и придумать что-то типа композиции выборок но это уже сложнова-то
у нас по итогу тогда будут очень маленькие объекты и их будет много, но сервисов будет не так много как объектов

Google

Sergey
29.01.2017
15:53:33
и пока у тебя вся система состоит из маленьких самодостаточных объектов и ты следишь за зависимостями - все будет красиво и удобно

Salavat
29.01.2017
15:58:53
Но придёт момент и ты сойдёшь с ума?

Sergey
29.01.2017
15:59:12
да нет, ты скорее сойдешь с ума если у тебя система будет состоять из классов по 1000 строк
с наследованием, статикой и кучей ифов
когда непонятно что кто юзает и зачем
вопрос масштабов
unix way

Salavat
29.01.2017
16:01:37
Нет... мы пока не такие большие
Но логика ясна
Осталось заставать себя следовать ей
Не лениться то есть

Sergey
29.01.2017
16:02:17
я помниться тоже не верил что такой подход ускоряет дела

Sergey
29.01.2017
16:02:31
а потом настроил нормально шаблоны в шторме и да, действительно норм живется
главное что бы тупой бойлерплейт за тебя IDE генерила

Salavat
29.01.2017
16:03:14

Dmitriy
29.01.2017
16:03:24
Такой подход хоть и задерживает разработку в начале, но потом ускоряет ее, когда нужны новые фитчи

Sergey
29.01.2017
16:04:04

Dmitriy
29.01.2017
16:04:47
Я просто люблю подход. хуяк в продакшен, а если взлетит, все по умному =)

ModerBot
29.01.2017
16:04:48

Sergey
29.01.2017
16:04:58
Я не знаю что это)
ну тип... ты создаешь класс как? Создаешь пустой файл и фигачишь руками или просишь IDE все создать и оно само правильный нэймспейс сделает и все такое?

Google

Dmitriy
29.01.2017
16:05:00

Sergey
29.01.2017
16:05:21

Dmitriy
29.01.2017
16:05:33
Да, все так

Sergey
29.01.2017
16:05:37
нормальный подход особенно когда ты не знаешь что делаешь
или заказчик не знает чего хочет
но как бы... в этом случае разделение на маленькие объектики только профит дает
ибо.... выкатывать прототипы тебе надо будет и сильно после продакшена если ты работаешь над каким-то более-менее непонятным приложением

Dmitriy
29.01.2017
16:07:09
Но я делаю для себя. или для компании своей. Я просто взвешиваю время, если нужно срочно. быстро прототип фигачим. Стиль кода сильно зависит от времени когда нужно выкатить первую версию

Admin
ERROR: S client not available

Dmitriy
29.01.2017
16:08:40

ModerBot
29.01.2017
16:08:40

Dmitriy
29.01.2017
16:09:42

Sergey
29.01.2017
16:10:30
более того, даже если ты пишешь прототип, хотя бы 5 минут линших потратить на именование вещей сэкономит тебе потом минут 15 на чтение кода.

Dmitriy
29.01.2017
16:13:21
Именование то не проблема. Про г*окод я имею ввиду. Какую-ту фигню в модель засунуть(хотя она там не нужна).
Конечно IDE помогает здорого с шаблонами.

Sergey
29.01.2017
16:13:47
> Какую-ту фигню в модель засунуть(хотя она там не нужна).
не ну у меня например в текущем проекте безумные сроки
и потому говнишка тоже хватает
но в целом тупо за счет того что есть дробление введение человека в проект занимает не так много времени
буквально недели две назад сажал нового чувака, он вкурил что где за 2 дня

Dmitriy
29.01.2017
16:15:12
Напимер была задача отправлять данные в 3х местах на сервер. Сделать нужно было прям сейчас. Я тупо копипастом вставил и не парился. Но я не чисто разрабатываю продукт, у меня еще много административной работы. Мне проще было копипастнуть 3 раза, а уже дома спокойно вынести это в норм классы.

Google

Sergey
29.01.2017
16:17:41
не норм
например есть такая проблема среди разработчиков которые не хотят писать говнокод как преждевременная оптимизация

ModerBot
29.01.2017
16:18:01
Sergey был заблокирован за мат [5/5]…не хотят писать [говно]код как преждевременая оптимизация

Aleksandr
29.01.2017
16:21:19
Жестковатый бот )
Почистите регекспы

Алексей
29.01.2017
16:54:52
Пойду-ка лучше в конфу типа @symfony_php, где нет упоротого бота. Пользы от него никакой, один вред. Всем успехов.

ModerBot
29.01.2017
16:58:07
Привет, Yet Another Stats! Пожалуйста соблюдай правила и не ругайся
/help@AngryModerBot

Salavat
29.01.2017
18:42:55
Ну вот и кому я ответил.

Dmitriy
29.01.2017
18:46:06
Мы тебя слушаем, не переживай

Salavat
29.01.2017
19:19:17
Да я к тому, что бот банит не тех

ModerBot
29.01.2017
19:19:40

Salavat
29.01.2017
19:20:05
))) я увидел твое сообщение )

Dmitriy
29.01.2017
19:20:14
ну вот =(

ModerBot
29.01.2017
19:27:48
Хэльго проголосовал Да
Nick проголосовал Нет
f4rt~ проголосовал Да
Привет, f4rt~! Пожалуйста соблюдай правила и не ругайся
/help@AngryModerBot

f4rt~
29.01.2017
19:38:04
говнокод

ModerBot
29.01.2017
19:38:04
говнокод
f4rt~, Нельзя ругаться! [Предупреждений 1/5]