These are chat archives for LaravelRUS/chat

7th
Feb 2016
censoredgit
@censoredgit
Feb 07 2016 00:00
удали там php файлы
Uladzislau Danilchyk
@danilchican
Feb 07 2016 00:00
Наконец-то стал реагировать. спасибо @censoredgit
дурдом)
карма
censoredgit
@censoredgit
Feb 07 2016 00:01
@danilchican =)
Devalgo
@almassar
Feb 07 2016 05:05
есть кто живой?)))
Mikail Aziev
@aziev
Feb 07 2016 07:28
есть
Vladislav
@Danan96
Feb 07 2016 09:05
можно ли с помощью ORM вывести 10 запись с таблицы?
Artiom
@PhpArt
Feb 07 2016 09:07
@Danan96 можно
Vladislav
@Danan96
Feb 07 2016 09:10
@PhpArt С помощью какого метода?
Artiom
@PhpArt
Feb 07 2016 09:18
@Danan96 с помощью get() метода, например так
MyModle::skip(9)->take(1)->get();
Artur Gafurov
@assurrussa
Feb 07 2016 09:22
@PhpArt зачем так сложно? когда можно просто сделать Model::find(10)
Vladislav
@Danan96
Feb 07 2016 09:23
@PhpArt спасибо, не посмотрел в api документации, юзал
DB::select('SELECT * FROM `videos` ORDER BY `created_at` DESC LIMIT 1 OFFSET 10)
KarmaBot
@KarmaBot
Feb 07 2016 09:23
Спасибо (+1) для @PhpArt принято! Текущая карма +1.
Vladislav
@Danan96
Feb 07 2016 09:24
@assurrussa в моем случае не подходит, ибо find это id_user or id = 1
Artur Gafurov
@assurrussa
Feb 07 2016 09:26
@Danan96 видимо вопрос неправильно понял, если тебе просто вывести 10 запись, то в принципе да, этот вариант пойдет
Юрий
@sawerus
Feb 07 2016 09:26
@assurrussa воскресенье. Похмелье. Поздний подъем. 😀😀
Ну так то да. Можно было понять что десятую запись. Т. К. Слово запись а не записей
Юрий
@sawerus
Feb 07 2016 09:49
Однако я тоже сплю.
Anton Vorontsov
@symbios-zi
Feb 07 2016 10:10
здорова пацаны
Vladislav
@Danan96
Feb 07 2016 10:12
@symbios-zi hi
Sergey Protko
@fesor
Feb 07 2016 10:28
сон для слабаков
чет я слобак
Anton Vorontsov
@symbios-zi
Feb 07 2016 10:31
@fesor как успехи?
Sergey Protko
@fesor
Feb 07 2016 10:51
@symbios-zi разбираюсь с zero-downtime деплойментом с докером. Сначала расстроился что docker-compose это не позволяет, а потом обрадовался что таки позволяет с последней версии
Maxim
@Big-Shark
Feb 07 2016 10:53
@Danan96 DB::table('videos')->orderBy('created_at', 'DESC')->skip(10)->take(1)->get();
Artiom
@PhpArt
Feb 07 2016 10:54
@Big-Shark он же про ORM спрашивал, не?
Maxim
@Big-Shark
Feb 07 2016 10:54
Вопрос вопрос, у всех же наверное есть стейдж сервер, и тест всервер, ну или типа такого, как вы делаете тестирование разных бранчей?
@PhpArt я фиг знает про что он спрашивал, это мой скрипт превратил его в запрос, в квери билдер запрос, ну и он чтото странное спрашивал, вроде 10 записей, а вытаскивает десятую запись.
Vladislav
@Danan96
Feb 07 2016 10:57
@Big-Shark не странное, задание: вывести 10 запись из таблицы через ORM
Maxim
@Big-Shark
Feb 07 2016 10:59
@Danan96 я вот раз пять перечитал, и только потом понял чуть 10ую зпись
Artiom
@PhpArt
Feb 07 2016 10:59
вчера впервые выложил лару на вирт хост... думал придется повозиться, чтобы заработало мое "творенье", но нет... полёт нормальный ))
Vladislav
@Danan96
Feb 07 2016 11:00
@Big-Shark DDD
Vladislav
@Danan96
Feb 07 2016 11:05
@Big-Shark DB::select('SELECT * FROM videos LIMIT 1 OFFSET 10); Так быстрее выводит
@Big-Shark не отбой не быстрее чеи через query bilder
Vladislav
@Danan96
Feb 07 2016 13:12
Где все
Artiom
@PhpArt
Feb 07 2016 13:13
кодируют наверное
Vladislav
@Danan96
Feb 07 2016 13:23
@PhpArt вся мафия спит, проснутся ночью и начнут говорить что php говно)
Sergey Protko
@fesor
Feb 07 2016 13:25
@Danan96 увидел ключевые слова, DDD, причем тут ORM?
Maxim
@Big-Shark
Feb 07 2016 13:26
@fesor где ты увидел это?
Vladislav
@Danan96
Feb 07 2016 13:26
@fesor я тебя не понял
аххахахаха
Погуглил я DDD это Проблемно-ориентированное проектирование
Но я имел в виду :D :D :D <-смайлики
Sergey Protko
@fesor
Feb 07 2016 13:29
печалька
ну ладно, пойду дальше статью писать
Vladislav
@Danan96
Feb 07 2016 13:29
@fesor жоски ты типочек)
JhaoDa
@jhaoda
Feb 07 2016 13:29
Чот я не понял, с каких по Domain переводится как «проблема»? Или это общепринятый русскоязычный вариант?
Maxim
@Big-Shark
Feb 07 2016 13:30
@fesor https://gist.github.com/fesor/0e8453ebad0a07d1658c "Вы же знаете о TodoMVC?" исправь ссылку но TodoMVC
JhaoDa
@jhaoda
Feb 07 2016 13:30
@Danan96 ты вчера только из падика с кортов поднялся?
А, в вике даже висит уведомление, что надо переименовать в «предметно-ориентированное»...
Наверное, очередной спицыолизд переводил/писал...
Vladislav
@Danan96
Feb 07 2016 13:31
@jhaoda 0_0
vadym26
@vadym26
Feb 07 2016 14:12
Нужно поместить ссылку в бд для загруженного изображения, делаю так, но в базе появляется /tmp/phpJfLsrG хотя в папке images нормальное имя, что здесь не так?
if(Request::hasFile('img')){
$file = Request::file('img');
$imgname = $file->getClientOriginalName();
$file->move('images', $imgname);
$all['img']="/images/".$imgname;
Post::create(Request::all());
}
JhaoDa
@jhaoda
Feb 07 2016 14:13
@vadym26 оформи код
KarmaBot
@KarmaBot
Feb 07 2016 14:13
@vadym26, чтобы код легко читался, поставь перед ним и после него по строке с тремя обратными апострофами (символ ` на клавише с буквой "Ё").
Узнать больше про оформление сообщений можно в справке по Markdown (кнопка "M↓" внизу справа).
Кстати, свои сообщения здесь можно редактировать... ;)
Maxim
@Big-Shark
Feb 07 2016 14:14
@vadym26 так ты же создаешь пост из того что в реквесте, а не то что в $all
vadym26
@vadym26
Feb 07 2016 14:28
как уже не пробовал, не получается ничего(
JhaoDa
@jhaoda
Feb 07 2016 14:29
@vadym26 как пробовал?
@vadym26
if (Request::hasFile('img')) {
    $all = Request::except(['img']);
    $file = Request::file('img');
    $imgname = $file->getClientOriginalName();
    $file->move('images', $imgname);
    $all['img']="/images/".$imgname;
    Post::create($all);
}
Вроде бы простая логика — что создал, то и сохраняй. А ты создал одно, а сохраняешь совсем другое и удивляешься потом...
vadym26
@vadym26
Feb 07 2016 14:42
@jhaoda спасибо большое, хочу подтянуть ООП и PHP, что посоветуете? думаю начать с М. Зандстра "PHP. Объекты, шаблоны и методики программирования"
KarmaBot
@KarmaBot
Feb 07 2016 14:42
@vadym26, в этом чате принято добавлять имя пользователя, чтобы его поблагодарить.
JhaoDa
@jhaoda
Feb 07 2016 15:04
@vadym26 я бы предложил начать с мануала по РНР
Sergey Protko
@fesor
Feb 07 2016 15:13
@vadym26 не начинай с Зандстры
и в принципе забей на паттерны на первые пол годика хотя бы
пока не придет понимание что такое SOLID и основную идею ООП (и я не про чушь вроде инкапсуляции, наследования или полиморфизма)
Maxim
@Big-Shark
Feb 07 2016 15:14
@fesor а как ты относишься к тому чтоб первый фреймверк был микро фреймверком?
Sergey Protko
@fesor
Feb 07 2016 15:14
@Big-Shark да пофигу вообще)
@Big-Shark я пока не составил к сожалению полноценного мнения о том, как ддолжен происходить процесс обучения PHP разработчика. Знаю только то что до чуши про паттерны надо заставить новичка разобраться с тестами
Maxim
@Big-Shark
Feb 07 2016 15:16
@fesor хз хз, сколько лет без тестов все жили, и ничего, норм вроде)
Sergey Protko
@fesor
Feb 07 2016 15:16
@Big-Shark блин чувак, мне от таких фраз так грустно становится….
ты себе не представляешь
может на самом деле стоит забить на PHP
с такой культурой разработки у него нет будущего
Maxim
@Big-Shark
Feb 07 2016 15:17
@fesor ну у меня покрытия тестами достаточно маленькое, только функционал по заказам и расчету стоимости в основном, а в остальных местах тесты просто будут занимать больше времени.
Sergey Protko
@fesor
Feb 07 2016 15:18
@Big-Shark не не не, я не про “ваш код должен быть покрыт на 100%"
я просто про то, что бы люди умели тесты писать
и понимали зачем это надо
а так у меня тож тестами покрыто далеко не все что я пишу)
vadym26
@vadym26
Feb 07 2016 15:19
не понимаю о каких тестах идет речь?
Maxim
@Big-Shark
Feb 07 2016 15:19
@fesor я вот вроде понимаю, но мне кажется писать не умею, я не видел просто примеров где бы ясно и доходчего было показано как надо и как не надо писать тесты, ну и или проект какой крутой где тесты написаны хорошо и понятно.
Sergey Protko
@fesor
Feb 07 2016 15:21
@vadym26 автоматические функциональные тесты: юнит, интеграционные, e2e, пирамида тестирования...
@Big-Shark надо статейку забацать
@Big-Shark не ужто нет норм статей по тестированию?
типа которые описывают основные принципы
Maxim
@Big-Shark
Feb 07 2016 15:23
@fesor ну я особо ничего не находил, желательно на русском
@fesor ну основные принцыпы юнит тестов насколько я знаю что мы тестируем метод, и микаем все зависимости, ну и не повторям логику.
Sergey Protko
@fesor
Feb 07 2016 15:24
@Big-Shark мокать все зависимости - это для изоляции, можно не все зависимости мокать
можно на стабы подменять
основная соль - тестировать не привязываясь к деталям реализации
ну то есть именно по этому тестировать репозитории или там active record юнит тестами - бред
ибо тебе придется замокать query builder
а в этом нет никакого смысла
это долго писать, и надо будет править на каждый чих
а тесты должны меняться только когда меняется интерфейс
Maxim
@Big-Shark
Feb 07 2016 15:26
@fesor я не особо понимаю в чем сложность тестирования актив рекорда, вроде тоже самое что и ди тестировать как мне кажется.
Sergey Protko
@fesor
Feb 07 2016 15:27
@Big-Shark не, мокать “зависимости” с active record глупо
ну то есть нет никаких проблем с тестированием AR если ты поднимешь для тестов реальную базу данных
Maxim
@Big-Shark
Feb 07 2016 15:27
@fesor зачем поднимать реальную базу?
Sergey Protko
@fesor
Feb 07 2016 15:27
а если у тебя целый жирный компонент поднят - то это уже не юнит тесты а интеграционные тесты)
@Big-Shark а как ты себе это представляешь?
ну вот как протестировать что-то в AR не поднимая базу данных?
Maxim
@Big-Shark
Feb 07 2016 15:28
@fesor ну мокнуть этот ар обьект, и указать какой гетер что должен вернуть.
Sergey Protko
@fesor
Feb 07 2016 15:29
не не не
Maxim
@Big-Shark
Feb 07 2016 15:29
@fesor ну или создать этот ар обьект, и передать для выполнения дальше, и мокнуть функцию save
Sergey Protko
@fesor
Feb 07 2016 15:29
ты не понял, AR подразумевает что у тебя доменная логика там есть
и вот ее протестировать можно только интеграционными тестами
Maxim
@Big-Shark
Feb 07 2016 15:29
@fesor почему?
vadym26
@vadym26
Feb 07 2016 15:29
ну а если уже начал изучать Laravel то что посоветуете, ну кроме документации)
Maxim
@Big-Shark
Feb 07 2016 15:29
@fesor ты можешь привести примеры как это делается в дм и в ар, и почему в ар плохо?
Sergey Protko
@fesor
Feb 07 2016 15:29

и мокнуть функцию save

мокнуть часть интерфейса тестируемого объекта? Опять же отстойный вариант

Maxim
@Big-Shark
Feb 07 2016 15:29
@vadym26 ну документацию по пхп еще
Sergey Protko
@fesor
Feb 07 2016 15:30
@Big-Shark я не говорю что AR это плохо, просто это не так хорошо)
Maxim
@Big-Shark
Feb 07 2016 15:30
@fesor чем плохо мокать чать интерфейса тестируемого объекта?
@fesor нет, я понимаю что ар это плохо, но я не люблю доктрину) Ну или я просто еще ее не познал)
Sergey Protko
@fesor
Feb 07 2016 15:30
@Big-Shark тем что твои тесты становятся неочевидными и ты завязываешься на детали реализации

@Big-Shark

я понимаю что ар это плохо, но я не люблю доктрину

вот опять же

доктрина - не единственный вариант data mapper
и active record это нормально
нет вообще ничего плохого, есть то что не подходит в конкретной ситуации
vadym26
@vadym26
Feb 07 2016 15:31
я вот могу написать что-то небольшое на пхп, только процедурными методами, а в Laravel сплошое ооп
Sergey Protko
@fesor
Feb 07 2016 15:31
active record - это когда мы сущность смерджили с row data gateway
@vadym26 тебе надо сломать мозг
Maxim
@Big-Shark
Feb 07 2016 15:32
@fesor ну смотри, у нас есть класс который работает с спи допустим, и в нем есть функция exec, которая делает сам запрос, мы разве должны делать этот запрос когда тестируем другую функцию которая подготавливает данные? Мне кажется мы должны мокнуть екзек, и проверять что в него передались нужные нам данные, а значит функция отработала верно, разве нет?
Sergey Protko
@fesor
Feb 07 2016 15:32
@vadym26 сломать образ мышления. Мыслить абстракциями
Maxim
@Big-Shark
Feb 07 2016 15:32
@fesor покажи еще крутые дм на пхп, буду рад)
Maxim
@Big-Shark
Feb 07 2016 15:34
@fesor аналог очень слабый, спот2 по сути доктрина в другой оболочки)
Sergey Protko
@fesor
Feb 07 2016 15:34
@Big-Shark что значит “слабый”?
ты хотел data mapper - это все дата мэпперы
полноценные
без unit of work
JhaoDa
@jhaoda
Feb 07 2016 15:35
@vadym26 в документации по РНР есть про ООП
Maxim
@Big-Shark
Feb 07 2016 15:35
@fesor ну когда я его смотрел, там все было очень плохо с загрузками, небыло идмапа, юнит оф ворк, и тд
vadym26
@vadym26
Feb 07 2016 15:35
@fesor я вот пытаюсь сейчас это делать, ищу литературу, думал Зандстра поможет
JhaoDa
@jhaoda
Feb 07 2016 15:35
@vadym26 и с этого надо начать
Sergey Protko
@fesor
Feb 07 2016 15:35
@jhaoda в документации по PHP есть про объектную модель PHP но не про ООП
но начинать с этого надо да
JhaoDa
@jhaoda
Feb 07 2016 15:35
@fesor ты как ночной хейтер nuzsk :)
Sergey Protko
@fesor
Feb 07 2016 15:35
@vadym26 зандстра не поможет никому и ни счем
vadym26
@vadym26
Feb 07 2016 15:36
понял, всем спасибо, надеюсь с меня что-то получится)
Sergey Protko
@fesor
Feb 07 2016 15:36
вообще книги по PHP бесполезны чуть более чем полностью
только мануал
@Big-Shark зачем тебе еще одна доктрина?)
в том то и соль что identity map, unit of work - это все обычно не надо
это все надо когда у тебя домен настолько сложный. что ты бы хотел что бы все это хэндлилось магией
Maxim
@Big-Shark
Feb 07 2016 15:37
@fesor ну насчет uow еще согласен, а вот идМап штука очень крутая
@fesor почему я говорю что uow не всегда нужен, потому что я работаю с пропелом, и тут связаные модели сохраняются 1 запросом в транзакции, а мы в 99 процентах сохраняем именно связанные модели
Sergey Protko
@fesor
Feb 07 2016 15:39
@Big-Shark ты же вкурсе что в доктрине реализация identity map занимает строчки 4?
Maxim
@Big-Shark
Feb 07 2016 15:39
@fesor нет, но почемуто мне кажется всеж больше
Sergey Protko
@fesor
Feb 07 2016 15:40
@Big-Shark это массив, и все
Maxim
@Big-Shark
Feb 07 2016 15:40
@fesor ну да, но а как же его отчистка, доставания от туда, складывание туда, проверка на то что такое обьект уже есть
Sergey Protko
@fesor
Feb 07 2016 15:40
@Big-Shark по одной строчке на все что ты сказал
Maxim
@Big-Shark
Feb 07 2016 15:41
@fesor идМап вообще штука прикольная, затраты минимальные, а сколько плюсов)
@fesor у тебя есть точное подтверждение что это 4 строчки?
Sergey Protko
@fesor
Feb 07 2016 15:42
$identityMap = [];

public function findByIdentity($entityType, $id) {
    if (!isset($identityMap[$entityType][$id])) {
        $entity = $this->_fetch($entityType, $id);
        if ($entity) {
            $this->identityMap[$entityType][$id] = $entity;
        }
    }

   return $identityMap[$entityType][$id];
}
вот так примерно работает “identity map"
ну то есть если тебе оч хочется ты можешь дописать это
Identity Map нужен доктрине только потому что он нужен Unit of Work
jongleb
@jongleb
Feb 07 2016 15:44
Eloqunet модели содержат логику описания связей как Active Record
JhaoDa
@jhaoda
Feb 07 2016 15:44
Аааа, вы его призвали!
Sergey Protko
@fesor
Feb 07 2016 15:44
@jongleb открою тайну - Active Record ничего не знает о связях
@jongleb Active Record как паттерн отвечает только за один конкретный ряд конкретной таблицы. Один одинешенек объект. А связи - это уже ORM, совсем другой паттерн
@jongleb для более простого понимания что такое active record стоит сначала почитать как жили с row data gateway (в zend1 наприер)
jongleb
@jongleb
Feb 07 2016 15:53
Ну ведь если совсем грубо то он как бы реализует саму орм
Sergey Protko
@fesor
Feb 07 2016 16:02
@jongleb нет, вообще никакого отношения, абсолютно разные задачи решают
vadym26
@vadym26
Feb 07 2016 16:02
действительно начал изучать документацю пхп, все доступно и понятно изложено, то что надо
Sergey Protko
@fesor
Feb 07 2016 16:04
@Big-Shark вот еще интересная: https://github.com/gabordemooij/redbean
JhaoDa
@jhaoda
Feb 07 2016 16:05
@vadym26 ты прям вот щас удивил
Обычно говорят «да говно ваша документация, её для профессоров писали»
Юрий
@sawerus
Feb 07 2016 16:06
@jhaoda ни разу не слышал. Что реально много таких умников?
@sawerus документация для слабаков!
JhaoDa
@jhaoda
Feb 07 2016 16:06
@sawerus раз в неделю точно появляется
Ну ладно, раз в две недели :)
Sergey Protko
@fesor
Feb 07 2016 16:07
@sawerus хз, на самом деле очень часто, особенно на ресурсах типа тостера)
Dave
@aios
Feb 07 2016 16:07
@jhaoda такие которые "Не хочу читать доку - дайте архивчик"
Sergey Protko
@fesor
Feb 07 2016 16:07
именно такие да
JhaoDa
@jhaoda
Feb 07 2016 16:07
@aios типа того
Юрий
@sawerus
Feb 07 2016 16:07
Постоянно в доках. Как без низ можно вообще не представляю.
Dave
@aios
Feb 07 2016 16:07
@fesor Кстати редбин юзал
@fesor не понравилась.
JhaoDa
@jhaoda
Feb 07 2016 16:08
@sawerus тех, кто читает доку, не уважают посоны с раёна и девки не дают
jongleb
@jongleb
Feb 07 2016 16:08
Да вообще не надо штудировать нифига доку. Сел писать что то нужно-залез посомтрел или просто загуглил
Sergey Protko
@fesor
Feb 07 2016 16:08
@jongleb нет, надо хотя бы один раз ее прочитать
JhaoDa
@jhaoda
Feb 07 2016 16:09
Вот Джонглеб чоткий потсан
Sergey Protko
@fesor
Feb 07 2016 16:09
что бы значть что там уже есть
Dave
@aios
Feb 07 2016 16:09
@jhaoda <sarcasm></sarcasm>
Sergey Protko
@fesor
Feb 07 2016 16:09
ну мол почитал пару разделов - закрепил навыки практикой по пройденному. Потом еще чутка и еще чутка. Парарельно гугля что когда юзать
JhaoDa
@jhaoda
Feb 07 2016 16:09
@aios точно :)
jongleb
@jongleb
Feb 07 2016 16:10
Ну как бы со временем просто знаешь уже что это точно в доке найдется. Все манипуляции с массивом итд я уже лезу как бы зная что там всяко это будет
Maxim
@Big-Shark
Feb 07 2016 16:20
@fesor может ты статью выкинеш на гит, а то там куча косяков в синтаксисе маркдуана, а гисты править нельзя(
Vladislav
@Danan96
Feb 07 2016 16:25

Написал правило

<?php 

namespace App\Http\Requests;

class SearchRequest extends Request {
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'search' => 'required|max:100',
        ];
    }
}

В контроллере прописал

use App\Http\Requests\SearchRequest;

public function search(SearchRequest $request)
    {   
        //return view('home.search' , ['videos' => $videos]);
    }

Ошибка Forbidden

KarmaBot
@KarmaBot
Feb 07 2016 16:25
@Danan96, чтобы показать длинный листинг кода желательно использовать pastebin-сервис, например gist.github.com или laravel.io/bin.
Maxim
@Big-Shark
Feb 07 2016 16:27
@Danan96 ну так форбиден же
Vladislav
@Danan96
Feb 07 2016 16:28
@Big-Shark ну так а чего она вылетает

@Big-Shark

  public function search(Request $request) {}

И нет ошибки

Sergey Protko
@fesor
Feb 07 2016 16:31
@Big-Shark ты про какую?)
@Big-Shark в целом неплохой вариант… сделать сайтик
php.rocks - домен можно купить за 499 баксов
прикольно
JhaoDa
@jhaoda
Feb 07 2016 16:33
@Danan96 https://laravel.com/docs/5.1/validation#form-request-validation, раздел «Authorizing Form Requests»
Sergey Protko
@fesor
Feb 07 2016 16:33
php.church - 40 баксов
Dave
@aios
Feb 07 2016 16:51
@fesor php.online
@fesor php.site
ваще шикарный
полтора мульта
Sergey Protko
@fesor
Feb 07 2016 16:52
burnthe.chuch
Ivan
@Hunternnm
Feb 07 2016 17:13
Всем бобра
Soprun Vladislav
@vlsoprun
Feb 07 2016 17:13
@Hunternnm и тебе бобра ))
Dave
@aios
Feb 07 2016 17:14
@Hunternnm у нас тут скоро ферма бобров будет - я насчитал от тебя за неделю уже около 29 бобров
Ivan
@Hunternnm
Feb 07 2016 17:14
@aios максимум 7
Dave
@aios
Feb 07 2016 17:15
@Hunternnm это если в полгода по 172 бобра.
Ivan
@Hunternnm
Feb 07 2016 17:15
@aios каждый день по бобру бери
в вск не всегда
т.е. твой боброметр слегка сломан
Soprun Vladislav
@vlsoprun
Feb 07 2016 17:16
:smile:
Dave
@aios
Feb 07 2016 17:19
@Hunternnm нет.. у тебя еще проскакивали в благодарностях
@Hunternnm типо - спасибо - бобра!
Ivan
@Hunternnm
Feb 07 2016 17:20
@aios неее, только при приветствии
kinkytail
@kinkytail
Feb 07 2016 18:26
как проверить в маршруте есть ли slug в базе
JhaoDa
@jhaoda
Feb 07 2016 18:30
@kinkytail надо почитать документацию
Роман Сохарев
@greabock
Feb 07 2016 18:31
@NelinD пинг
@kinkytail обычно это делается в контроллере
Route::get('/{slug}', 'SomeController@some')
#...
class SomeController extends BaseController {
     #...
     public function some(Entity $entity, $slug)
     {
           $entity = $entity->whereSlug($slug)->firstOrFail();

           return view('some.view', compact('entity'));
     }

}
kinkytail
@kinkytail
Feb 07 2016 18:37
@greabock спасибо
KarmaBot
@KarmaBot
Feb 07 2016 18:37
Спасибо (+1) для @greabock принято! Текущая карма +326.
JhaoDa
@jhaoda
Feb 07 2016 18:38
@greabock я наивно подозреваю, что будет вагон вопросов по твоему коду
Потому что документацию человек не читал...
Роман Сохарев
@greabock
Feb 07 2016 18:39
Ну вот тогда и отправлю в доку )
@jhaoda помнишь мы с тобой говорили про обработку исключений, и то как модули должны поставлять свои обработчики?
JhaoDa
@jhaoda
Feb 07 2016 18:42
@greabock смутно. Точнее, вообще не помню.
Maxim
@Big-Shark
Feb 07 2016 18:43
@greabock хмм, а будет работать кастинг обьекта через аргумент роута?
Роман Сохарев
@greabock
Feb 07 2016 18:44
нет, я бы сделал байндинг, но там же слаг не pk скорее всего
хм... а реально, можно как-то сделать байндниг не по pk, а по какому-то другому unique?
надо будет поковырять на досуге
Роман Сохарев
@greabock
Feb 07 2016 18:49
@jhaoda короче суть в том, что модуль может поставлять не только исключение, но и его обработчик тоже
JhaoDa
@jhaoda
Feb 07 2016 18:49
@greabock в 5.2 у модели есть или можно добавить функцию getRouteKeyName(), которая должна вернуть название поля, по которому и будет искаться запись
Роман Сохарев
@greabock
Feb 07 2016 18:50
@jhaoda :+1:
JhaoDa
@jhaoda
Feb 07 2016 18:51
@greabock ну тут возникает один вопрос — как свой обработчик «встроить» аккуратно в общую систему, что бы всё работало?
Роман Сохарев
@greabock
Feb 07 2016 18:51
вооот
я об этом и толкую
Maxim
@Big-Shark
Feb 07 2016 18:52
@greabock @jhaoda зачем обрабатывать исключения брошенные сторонним модулем?
Роман Сохарев
@greabock
Feb 07 2016 18:52
можно чутка переписать главный хэндлер. Что-то в этом духе
JhaoDa
@jhaoda
Feb 07 2016 18:52
@Big-Shark мы не про сторонние модули, а про модульное приложение
Uladzislau Danilchyk
@danilchican
Feb 07 2016 18:53
ребята, добрый вечер. такой вопрос: на сайте зарегистрирован юзер, существуют стандартные column'ы created_at & updated_at. при авторизации эти два поля меняют своё значение. мне просто казалось, что created_at отвечает ведь за дату/время создания записи в таблице... . так и должно быть или ошибаюсь? просто мне нужно хранить дату регистрации пользователя и чтобы она не менялась, а дату обновления профиля нужно изменять. буду очень благодарен за помощь.
KarmaBot
@KarmaBot
Feb 07 2016 18:53
@danilchican, привет, как настроение?
Роман Сохарев
@greabock
Feb 07 2016 18:54
@jhaoda короче, самый сок вот тут
ну это так - набросок
скорее всего, его можно более удачно переписать
JhaoDa
@jhaoda
Feb 07 2016 18:55
@greabock ну это понятно... а обращаться к нему как?
app(Illuminate\Contracts\Debug\ExceptionHandler::class)->addHandler($e, $h)?
Должно работать, но как-то выглядит...
Роман Сохарев
@greabock
Feb 07 2016 18:56
@jhaoda можно статикой сделать
JhaoDa
@jhaoda
Feb 07 2016 18:57
@greabock фасад?
Роман Сохарев
@greabock
Feb 07 2016 18:57
Да нет, просто метод статический, и сабхэндлеры в статике хранить
это конечно может не тру
JhaoDa
@jhaoda
Feb 07 2016 18:58
Но обращаться-то всё равно к хэндлеру надо, и всё равно через имя контракта, алиаса-то нету у него... если только сделать потом алиас где-то в провайдере
Роман Сохарев
@greabock
Feb 07 2016 18:59
короче, суть не в этом. Как конкретно реализовать - вопрос десятый. Главное - суть. А суть в том, что модули поставляют не только исключения, но и обработчики. И это круто. Ну или... мне кажется, что это круто ))
Alexey
@Butochnikov
Feb 07 2016 19:00
@SerafimArts кому там с чем помочь надо было?
Юрий
@sawerus
Feb 07 2016 19:00
@danilchican все верно. Посмотри базу. Недавно была такая трабла. Был в базе атрибут. При обновлении таблицы менялись оба поля. Если не ошибаюсь еще jhaoda ссылку кидал. В общем там что то связаное с тем что нельзя чтобы поля были null. Но могу ошибатся или у тебя может вообще другая проблема.
JhaoDa
@jhaoda
Feb 07 2016 19:01
@danilchican https://laravel.com/docs/5.2/upgrade, раздел «MySQL Dates»
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:02
@sawerus @jhaoda спасибо, сейчас почитаю.)
KarmaBot
@KarmaBot
Feb 07 2016 19:02

Находчивый

@sawerus, вы выполнили условие: "Набрать 10 кармы.".
С чем и поздравляем =)
Находчивый
Спасибо (+1) для @sawerus принято! Текущая карма +10.
Спасибо (+1) для @jhaoda принято! Текущая карма +646.
JhaoDa
@jhaoda
Feb 07 2016 19:03
@greabock не, ну ваще круто, да, ибо модуль должен в идеале быть самодостаточен
Т.е. просто написал где-то в провайдере (или даже в композере) app/module-comments и всё — исключения, роуты, ассеты и всё, что надо само подключилось
Роман Сохарев
@greabock
Feb 07 2016 19:04
@jhaoda вот и я о том )
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:05
@sawerus тут вроде говорится о 5.7. версии мускула, а у меня 5.6.25. это как-то повлияет на результат в данном случае?
JhaoDa
@jhaoda
Feb 07 2016 19:05
@danilchican ты в базу загляни и всё станет понятно
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:05
@jhaoda сейчас, надо еще прочитать)
JhaoDa
@jhaoda
Feb 07 2016 19:08
@greabock но возникает тонкость... допустим, я добавил в меню ссылку на главную станицу этого модуля, на список каментов. Потом я модуль в провайдере закомментил, жмякнул F5 и получил ошибку, что мол, роут не найден
Роман Сохарев
@greabock
Feb 07 2016 19:08
Вот в том и прикол, что менюшка должна работать точно также
JhaoDa
@jhaoda
Feb 07 2016 19:08
Вроде бы и правильно, а вроде бы и хочется идеальной независимости...
Роман Сохарев
@greabock
Feb 07 2016 19:09
То есть пункт меню тоже должен поставляться модулем
JhaoDa
@jhaoda
Feb 07 2016 19:09
Тогда это уже плагин получается. Он должен встраиваться в систему на уровне приложения, а не фреймворка
Роман Сохарев
@greabock
Feb 07 2016 19:09
Ну пусть будет плагин )
JhaoDa
@jhaoda
Feb 07 2016 19:10
Надо интерфейс для меню, для хлебных крошек, для того, сего... и получаем CMS
Роман Сохарев
@greabock
Feb 07 2016 19:10
XD
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:13
@jhaoda я использую стандартную структуру таблицы users. только добавил одно поле, которое может быть null. Ну и, соответственно, remember_token тоже может иметь null. Как я понял, нужно изменить миграцию, но что именно написать - не совсем. В исходном состоянии она имеет следующую структуру.
Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name')->nullable();
            $table->string('email')->unique();
            $table->string('password', 60);
            $table->rememberToken();
            $table->timestamps();
});
JhaoDa
@jhaoda
Feb 07 2016 19:14
@danilchican ты издеваешься? Или ты прочитал, но не понял?
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:15
@jhaoda второе. я не совсем понял.
JhaoDa
@jhaoda
Feb 07 2016 19:15
Видел там пример, на выбор три варианта?
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:15
да.
JhaoDa
@jhaoda
Feb 07 2016 19:15
$table->timestamp('foo')->nullable();
$table->timestamp('foo')->useCurrent();
$table->nullableTimestamps();
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:15
я просто не знаю второе или третье для моего случая нужно
как я понял, вроде второе
JhaoDa
@jhaoda
Feb 07 2016 19:16
@danilchican ты меня расстраиваешь :(
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:16
но сомневаюсь, поэтому прошу помощи
@jhaoda :(
JhaoDa
@jhaoda
Feb 07 2016 19:16
@danilchican useCurrent() какбэ намекает, что при изменении это поле ВСЕГДА будет заполняться текущим временем
Не от этого ли ты хочешь избавиться?

Там даже написано

You may use the useCurrent method in your migrations to default the timestamp columns to the current timestamps

Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:17
хорошо. но если указать третий вариант в новой миграции, то при регистрации пользователя не нужно будет указывать самому дату в контроллере вручную разве?
JhaoDa
@jhaoda
Feb 07 2016 19:18
@danilchican конечно же нужно
А можно использовать первый и второй варианты для разных полей
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:20

@jhaoda вот и я о том же. поэтому тупил. да и еще переводчик перевел это предложение как

Вы можете использовать useCurrent метод в своих миграциях, чтобы не выполнить своих обязательств колонки метки времени к текущим меткам времени`
:)

JhaoDa
@jhaoda
Feb 07 2016 19:20
@danilchican надо в голове переводить
@danilchican хотя топ, чо ты меня путаешь!
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:21
@jhaoda а если юзать первый вариант. то нужно в новой миграции включить эту строку и всё? либо заново всю миграцию переписать и refresh'нуть?
@jhaoda слушаю
JhaoDa
@jhaoda
Feb 07 2016 19:22
При сохранении модели элоквент заполнит поле created_at, при чем тут вообще то, что в базе?
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:23
@jhaoda да, заполнит. в смысле то, что в базе?
JhaoDa
@jhaoda
Feb 07 2016 19:23
База вносит свои коррективы уже когда записывает данные

@danilchican

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

Нет, не нужно

Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:24
@jhaoda понял. сейчас попробую
JhaoDa
@jhaoda
Feb 07 2016 19:25
Ларавель сама знает, когда записать данные в created_at, а когда в updated_at
Конечно же, если использовать модели.
Юрий
@sawerus
Feb 07 2016 19:27
и если в структуре таблицы нет атрибута обновлять дату при обновлении таблицы.
JhaoDa
@jhaoda
Feb 07 2016 19:28
@sawerus ну я про то и говорю, что он там не нужен и даже вреден
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:40
сейчас всё верно. спасибо, @sawerus, @jhaoda. изменяется только поле updated_at при авторизации
JhaoDa
@jhaoda
Feb 07 2016 19:42
@danilchican бот не понимает "спасибо" внутри предложения
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:42
@jhaoda окей. но в карму-то уже зачтено было))
JhaoDa
@jhaoda
Feb 07 2016 19:43
@danilchican нет. Или ты про ту карму, про которую индусы рассказывают?
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:44
This message was deleted

@jhaoda

Спасибо (+1) для @sawerus принято! Текущая карма +10.
Спасибо (+1) для @jhaoda принято! Текущая карма +646.

JhaoDa
@jhaoda
Feb 07 2016 19:46
Чот не понял, было уже 10 и 646...
Maxim
@Big-Shark
Feb 07 2016 19:47
@jhaoda он намекает что он уже сказал тебе спасибо 1 раз за ссылку на доку, и 2 раза будет слишком много.
Uladzislau Danilchyk
@danilchican
Feb 07 2016 19:48
@jhaoda ну. так я об этом и говорю, что решали проблему с датой и я ранее сказал спасибо и кармабот принял) ну а сейчас так получилось в середине предложения, да и ты посчитал бы за накрутку)
@Big-Shark мне не жаль вовсе) просто как-то уже сделали замечание кому-то, мол, не говорите спасибопо 10 раз в час
projct1
@projct1
Feb 07 2016 20:12
когда ларавел 6 выйдет?)
Sergey Protko
@fesor
Feb 07 2016 20:15
“А ларавель 6 выйдет?"
JhaoDa
@jhaoda
Feb 07 2016 20:15
"Нет, но могу джумлу скинуть"
Victor Golovko
@siptik
Feb 07 2016 20:55
Привет всем
научите паттернам ))
Sergey Protko
@fesor
Feb 07 2016 20:56
@siptik хм…. а ты уже понимаешь идеи ООП и значешь SOLID?
@siptik короч паттерны не надо учить, их надо смотреть для вдохновения когда ты уже познал какие именно проблемы они решают и почему они такие какие есть
Victor Golovko
@siptik
Feb 07 2016 21:00
@fesor поэтому и спрашиваю. Если бы я не видел проблемы, то не писал бы тута )
Sergey Protko
@fesor
Feb 07 2016 21:00
@siptik кто его знает, сейчас каждому второму книгу Зандстры подсовывают
@siptik какие у тебя проблемы?
Victor Golovko
@siptik
Feb 07 2016 21:04
@fesor
Я не спец в паттернах. Мне нужна подсказка какой паттерн применть в этом месте
 static public function getAvatarOrLetter(many.., many)
    {
            $avatar = FileHelper::get_full_url_to(many)
vadym26
@vadym26
Feb 07 2016 21:04
мне вот тоже хотели подсунуть но документация рулит)
Sergey Protko
@fesor
Feb 07 2016 21:05
@siptik мммм никакой? что именно ты хочешь сделать?
Victor Golovko
@siptik
Feb 07 2016 21:05
@fesor а ты проблемы не видишь?
может я ее сам себе придумал, я не спорю))
FileHelper
зависимость от этого класса
Sergey Protko
@fesor
Feb 07 2016 21:06
1) имя метода - я хз че оно делает, достает аватарку или письмо (или это аватарка в альбомном варианте? чта?)
2) глобальный доступ к FileHelper, хотя у тебя метод тож статический.. так что все едино
Victor Golovko
@siptik
Feb 07 2016 21:07
@fesor успокоил )
Sergey Protko
@fesor
Feb 07 2016 21:08
не я серьезно, давай начнем с того что делает этот метод и почему он у тебя статический
Victor Golovko
@siptik
Feb 07 2016 21:08
он возвращает путь к аватару или получаем первую букву если нет аватара
сорри
ща скину более полный вариант
Sergey Protko
@fesor
Feb 07 2016 21:09
@siptik достаточно только аргументов
Victor Golovko
@siptik
Feb 07 2016 21:11
/**
 * Class AvatarHelperR
 * @package App\Helpers
 */
class AvatarHelper
{
    /**
     * @param $username
     * @param $image_name
     * @param string $prefix
     * @return string
     */

static public function getAvatarOrLetter($username=null, $image_name, $prefix = 'avatar_40_',$letter=false,$no_image_width='100%')
    {
        if($letter==true) {
            $avatar = ($image_name != '') ? '<img src="'.url('/').'/'.FileHelper::get_full_photo_url(
                    $image_name,
                    $prefix
                ).'"/>' : ucfirst($username{0});
        }else{
            $avatar = ($image_name != '') ? '<img src="'.url('/').'/'.FileHelper::get_full_photo_url(
                    $image_name,
                    $prefix
                ).'"/>' :'<img src="'.url('/').'/images/no-photo.jpg" style="width:'.$no_image_width.';"> ';
        }
        return $avatar;
    }

}
я его пока делаю еще
поэтому тут не все что нужно
JhaoDa
@jhaoda
Feb 07 2016 21:12
@siptik слушай, ты код вообще не форматируешь, когда пишешь?
Victor Golovko
@siptik
Feb 07 2016 21:13
http://pix.toile-libre.org/upload/original/1454879588.png
JhaoDa
@jhaoda
Feb 07 2016 21:13
Хотя какая разница, тут всё ужасно...
@siptik картинку заверни в код
Sergey Protko
@fesor
Feb 07 2016 21:14
@siptik у тебя один метод занимается двумя вещами
это типа не правильно
Victor Golovko
@siptik
Feb 07 2016 21:15
согласен
Sergey Protko
@fesor
Feb 07 2016 21:15
зачем тебе $letter=false
я правильно понимаю что ты так генеришь аватарки в стиле скайпа?
Victor Golovko
@siptik
Feb 07 2016 21:15
по сути да
в данный момент этот функционал отключен
Sergey Protko
@fesor
Feb 07 2016 21:15
@siptik а чего ты не юзаешь ORM хоть какую-нибудь?
было б чуть проще
Victor Golovko
@siptik
Feb 07 2016 21:16
всмысле?
Sergey Protko
@fesor
Feb 07 2016 21:16
ну вместо кучи атрибутов у тебя было бы
$avatarResolver->resolve($user); // http://pix.toile-libre.org/upload/original/1454879588.png
ну… если хочешь так...
Victor Golovko
@siptik
Feb 07 2016 21:17
а я не уверен что это будет объект юзера
а может это просто будет список
Sergey Protko
@fesor
Feb 07 2016 21:17
@siptik список чего?
Victor Golovko
@siptik
Feb 07 2016 21:18
просто массив юзернеймов
Sergey Protko
@fesor
Feb 07 2016 21:18
@siptik а пути к картинам тогда откуда будут браться?
Victor Golovko
@siptik
Feb 07 2016 21:19
согласен, уже морожу
Nuzsk
@Nuzsk
Feb 07 2016 21:20
@siptik все плохо
начни с приведения в порядок кода
Victor Golovko
@siptik
Feb 07 2016 21:20
@Nuzsk все плохо у вас ) у меня все гуд)
Sergey Protko
@fesor
Feb 07 2016 21:21
@Nuzsk да ладно тебе, это не поможет)
@siptik у тебя все плохо… ты тип мутишь какой-то проект на самописе?
Victor Golovko
@siptik
Feb 07 2016 21:21
я мучу проект на 20k$
пошутить не удалось
Sergey Protko
@fesor
Feb 07 2016 21:22
@siptik значек доллара ставится перед циферкой, если что
Victor Golovko
@siptik
Feb 07 2016 21:22
я пишу для нас а не для американцев если что
Sergey Protko
@fesor
Feb 07 2016 21:22
@siptik ну да, это оправдывает говнокод)
@siptik ты объясни, это сапописный фреймворк, plain php или что это?
Victor Golovko
@siptik
Feb 07 2016 21:23
@fesor я и пришел сюда чтобы спросить
Sergey Protko
@fesor
Feb 07 2016 21:23
@siptik ответь на вопрос, нужен контекст, платформа, cms, фреймворк
в целом основная проблема тут - избавиться от юзернейма
Victor Golovko
@siptik
Feb 07 2016 21:23
успокойся, я в теме laravel буду писать про fuelphp? или что?
Sergey Protko
@fesor
Feb 07 2016 21:24
@siptik почему нет?)
судя по твоему коду - у тебя там Yii1.0
Victor Golovko
@siptik
Feb 07 2016 21:24
окей, коль блеснул умом, скажи почему
Sergey Protko
@fesor
Feb 07 2016 21:25
глобальная статика, хелперы, смешаны обязанности
я привел тебе как оно должно быть со стороны
$avatarResolver->resolveForUser($user);
а внутри уже можно творить любую сатану
брать первую буквы от юзенрейма
и генерить картинки
или же просто сгенерить урл
если ты не хочешь юзать объект User
или у тебя просто по каким-то причинам его нет
то задача упрощается если мы избавимся от username
if (empty($user[‘avatar_image'])) {
    $user[‘avatar_image'] = $this->avatarGenerator->generateForUsername($user[‘username']);
}

$imageUrl = $imageUrlResolver->resolve($user['avatar_image']));
Victor Golovko
@siptik
Feb 07 2016 21:29
$user[‘avatar_image']
ну-ну
OOG
Sergey Protko
@fesor
Feb 07 2016 21:30
@siptik то есть твоя процедурщина на статике лучше?
@siptik чувак, не расстраивай меня. У тебя нет объекта для юзера, так чем массив хуже кучи строк?)
Victor Golovko
@siptik
Feb 07 2016 21:30
ну так не учи, если " то есть твоя процедурщина на статике лучше"
Sergey Protko
@fesor
Feb 07 2016 21:30
охуеть
ладно, похуй
забаньте его
Nuzsk
@Nuzsk
Feb 07 2016 21:30
:smile:
Sergey Protko
@fesor
Feb 07 2016 21:31
блин либо троль либо поехавший
Victor Golovko
@siptik
Feb 07 2016 21:31
это я вас в первые вижу
Nuzsk
@Nuzsk
Feb 07 2016 21:31
это не первый эпизод
Victor Golovko
@siptik
Feb 07 2016 21:31
неужели сложно разговаривать в конструктивном ключе
Nuzsk
@Nuzsk
Feb 07 2016 21:32
левенштейна самописного нам не показывал, говорил что украдем реализацию :smile:
Sergey Protko
@fesor
Feb 07 2016 21:32
@siptik я пытался, реально пытался
а что в итоге?
ну-ну
OOG
какой смысл пытаться конструктивно вести диалог с человеком, который не в состоянии его поддерживать со своей стороны
Victor Golovko
@siptik
Feb 07 2016 21:33
а не филосовствовать что у меня Г, а сказать как нужно, а то много строк унижающих с нападками
Sergey Protko
@fesor
Feb 07 2016 21:33
который считает что использование массивов в качестве структур данных без поведения - это уже не ООП
@siptik я тебе предложил вариант как сделать
разделить получение урла и генерацию картинки на два отдельных действия
избавиться от статики
Victor Golovko
@siptik
Feb 07 2016 21:34
разделить получение урла и генерацию картинки на два отдельных действия
избавиться от статики
вот конструктивно
Sergey Protko
@fesor
Feb 07 2016 21:34
то есть пример кода тебя не впечатлил?
Victor Golovko
@siptik
Feb 07 2016 21:34
в чем причина "избавиться от статики"
Sergey Protko
@fesor
Feb 07 2016 21:34
@siptik ну… мы же про ООП говорим, а у тебя это все как процедуры используется
то что функция в контексте класса обявлена еще не означает что это метод
с учетом того что внутри идет такое же обращение к статическому методу класса (глобально доступному), по сути как к обычной функции
как итог - мы не управляем зависимостями
Victor Golovko
@siptik
Feb 07 2016 21:36
так это есть хелпер
Sergey Protko
@fesor
Feb 07 2016 21:36
хелперы это не ооп
это процедурщина
и расценивается как антипаттерн
Victor Golovko
@siptik
Feb 07 2016 21:36
окей DB::
Sergey Protko
@fesor
Feb 07 2016 21:36
а это уже ларавель стайл)
Nuzsk
@Nuzsk
Feb 07 2016 21:36
так это не хелперы
DB::
Sergey Protko
@fesor
Feb 07 2016 21:37
грубо говоря это сервис локатор для доступа к экземпляру квери билдера
ларавельщики еще это “фасадом” называют
(хотя паттерн фасад вообще не о том)
Victor Golovko
@siptik
Feb 07 2016 21:37
если бы сразу так, то сказал бы спасибо )
Sergey Protko
@fesor
Feb 07 2016 21:37
p.s. сервис локатор - тоже антипаттерн
поскольку это все те же глобально доступные сервисы и потеря контроля над зависимостями системы
Victor Golovko
@siptik
Feb 07 2016 21:38
а то начали "ох, все плохо" )) и еще пару раз повторили
Sergey Protko
@fesor
Feb 07 2016 21:38
ну ты бы не писал сюда если бы все было хорошо)
Victor Golovko
@siptik
Feb 07 2016 21:38
@fesor я по этому и написал сюда
т.к. вижу что не должно так быть
Sergey Protko
@fesor
Feb 07 2016 21:39
эх… много как быть не должно… но никто не слушает
и ООП у них это “классы"
JhaoDa
@jhaoda
Feb 07 2016 21:39
@fesor не матерись
Sergey Protko
@fesor
Feb 07 2016 21:39
@jhaoda дети смотрят?
ок
JhaoDa
@jhaoda
Feb 07 2016 21:40
@fesor не важно, кто смотрит.
@siptik а ты реально начни с того, что определись, хотя бы - camelCase или snake_case в именах методов
Потом про PSR-2 прочитай... начни с малого :)
Victor Golovko
@siptik
Feb 07 2016 21:42
а про это
get_full_photo_url
@jhaoda
JhaoDa
@jhaoda
Feb 07 2016 21:43
@siptik про это, про это...
Victor Golovko
@siptik
Feb 07 2016 21:43
я это поправлю. просто с другого проета выдрал
я еще делаю этот helper
сразу прибежал сюда
тот проект был в snake case
JhaoDa
@jhaoda
Feb 07 2016 21:44
@siptik и в именах переменных тоже
Victor Golovko
@siptik
Feb 07 2016 21:45
у меня переменные в snake case
имена методов в camel case
JhaoDa
@jhaoda
Feb 07 2016 21:45
Я, например, сразу с настороженностью отношусь к людям, которые PSR-2 не соблюдают. Он, конечно, не стандарт, а рекомендация, но...
Кривые отступы, нет пробелов или их избыток, пустые строки не к месту - это показывает отношение человека к коду
Victor Golovko
@siptik
Feb 07 2016 21:47
ну не нужно уже к коду придераться, если это все форматируется IDE
JhaoDa
@jhaoda
Feb 07 2016 21:47
Ну так отформатируй, чо ж ты не форматируешь?
Victor Golovko
@siptik
Feb 07 2016 21:48
так а где не отформатировано?
phpstorm так отформатировал если что
Sergey Protko
@fesor
Feb 07 2016 21:50
@siptik совет, если тебе надо собрать строку - воспользуйся sprintf- ом
уже читабельнее будет
Nuzsk
@Nuzsk
Feb 07 2016 21:51
@fesor а простые шаблоны не читабельнее? "<img src='{$var}' alt=..."
JhaoDa
@jhaoda
Feb 07 2016 21:51
@siptik я про PSR-2 говорю, а у тебя реально какой-то yii-стайл
Sergey Protko
@fesor
Feb 07 2016 21:51
а еще не юзай тернарный оператор
вообще
JhaoDa
@jhaoda
Feb 07 2016 21:52
О, блэйд-хейтер опять вылез
Andrei Sosnov
@atehnix
Feb 07 2016 21:52
@jhaoda а что, правда так в Yii было? О_о
Victor Golovko
@siptik
Feb 07 2016 21:52
<img src='{$var}' alt=..."
нет
кто как привык
не нужно тут рпо читабельность
JhaoDa
@jhaoda
Feb 07 2016 21:53
@siptik они там пробелы не любили ставить вокруг =, например
Nuzsk
@Nuzsk
Feb 07 2016 21:53
не нужно тут рпо читабельность
даже гиттер это лучше подсвечивает, чем просто спринтф\склейку
ide тем более
Victor Golovko
@siptik
Feb 07 2016 21:54
вот холивары развели на пару строк))
Sergey Protko
@fesor
Feb 07 2016 21:54
@siptik все ради читабельности, вообще все. Код намного чаще читают чем пишут, и тратят на это времени обычно больше (с осознанием происходящего)
Victor Golovko
@siptik
Feb 07 2016 21:54
За это я и плачу вам
))
разработчикам
Sergey Protko
@fesor
Feb 07 2016 21:54
@siptik ?
ты тип души продаешь?
Victor Golovko
@siptik
Feb 07 2016 21:54
нет, типа нанимаю
Sergey Protko
@fesor
Feb 07 2016 21:54
@siptik мне ты не платишь, денег не хватит
Victor Golovko
@siptik
Feb 07 2016 21:55
@fesor на всех все хватит. другое дело что я тебе на заплачу)
JhaoDa
@jhaoda
Feb 07 2016 21:56
@siptik угомонись
Sergey Protko
@fesor
Feb 07 2016 21:56

на заплачу)

рублями?)

JhaoDa
@jhaoda
Feb 07 2016 21:56
Тебе в чат банкиров надо, наверное, коли про бабло своё любишь рассуждать
Victor Golovko
@siptik
Feb 07 2016 21:57
ну так заставляете
Nuzsk
@Nuzsk
Feb 07 2016 21:57
ну так заставляете
каким образом?
JhaoDa
@jhaoda
Feb 07 2016 21:58
@siptik а мы тут, знаешь ли, всё больше про код. И твой код - говно, чувак, такие дела...
Sergey Protko
@fesor
Feb 07 2016 21:58
@Nuzsk просто игнорить надо, сам уйдет
Victor Golovko
@siptik
Feb 07 2016 21:58
так я сюда и прихожу чтобы его улучшить
Sergey Protko
@fesor
Feb 07 2016 21:58
@siptik найми программиста который его улучшит
Victor Golovko
@siptik
Feb 07 2016 21:58
только нужно быть дипломатичней, а не "все плохо"
я пришел за советом
Nuzsk
@Nuzsk
Feb 07 2016 21:59
там действительно плохо все
JhaoDa
@jhaoda
Feb 07 2016 21:59
@siptik нужно? Кому нужно?
Victor Golovko
@siptik
Feb 07 2016 21:59
мне нужно
Nuzsk
@Nuzsk
Feb 07 2016 21:59
от начала и до конца )
Sergey Protko
@fesor
Feb 07 2016 21:59
@siptik обидка?) не умеешь принимать критику - не проси ее
Victor Golovko
@siptik
Feb 07 2016 21:59
так я не просил критики, я спросил как нужно правильно
JhaoDa
@jhaoda
Feb 07 2016 22:00
@siptik ну ты и будь дипломатичней, кто ж против-то
Sergey Protko
@fesor
Feb 07 2016 22:00
@siptik я еще могу к построению предложений придраться)
Victor Golovko
@siptik
Feb 07 2016 22:00
критика, когда говорят, что правильно
Sergey Protko
@fesor
Feb 07 2016 22:00
коль уж на то пошло)
Nuzsk
@Nuzsk
Feb 07 2016 22:00
@siptik вообще ты взрослый дядя, а код у тебя весьма джуниорский. возможно все-же стоит изменить отношение к критике?
давно же кодишь...
Sergey Protko
@fesor
Feb 07 2016 22:01
отрицательное суждение о чём-либо (в искусстве, общественной жизни и т. д.), указание недостатков;
грустно наверное с такой позицией работодателя разработчикам нанятым работать
Victor Golovko
@siptik
Feb 07 2016 22:02
@Nuzsk я пишу код когда нет разработчиков
Sergey Protko
@fesor
Feb 07 2016 22:02
когда они ложатся спать)
Victor Golovko
@siptik
Feb 07 2016 22:03
ни грамма не смешно
Sergey Protko
@fesor
Feb 07 2016 22:04
я пожалуй соглашусь - это не смешно ни разу, я бы даже сказал грустно. Я переживаю за людей которые потом с тим кодом работать будут
помимо психологической травмы, можно и экономическую проекту нанести
Victor Golovko
@siptik
Feb 07 2016 22:04
ой, успокойся
Sergey Protko
@fesor
Feb 07 2016 22:05
я видел слишком много проектов, интересных проектов, где все убило “ай и так сойдет"
Victor Golovko
@siptik
Feb 07 2016 22:05
значит был плохой проект, где из-за этого все сложилось
JhaoDa
@jhaoda
Feb 07 2016 22:06
@siptik я вот не пойму, ты считаешь, что мы на тебя просто так «наезжаем»? Или из зависти к твоим тыщам баксов?
Victor Golovko
@siptik
Feb 07 2016 22:06
вы наезжаете просто так )
Sergey Protko
@fesor
Feb 07 2016 22:06
да нет, просто когда ты в год тратишь в год на суппорт проекта $200К
JhaoDa
@jhaoda
Feb 07 2016 22:06
М-да, медицина тут бессильна...
Sergey Protko
@fesor
Feb 07 2016 22:07
и за серваки еще по $2К в месяц
только потому что было написано все… мягко скажем
и можно было снизить эти расходы раза так в 2-3
просто потратив на начальном этапе чуть больше времени на “подумать что делаешь"
Victor Golovko
@siptik
Feb 07 2016 22:07
про тыщи баксов были сказаны по причине унижения "@siptik у тебя все плохо… ты тип мутишь какой-то проект на самописе?"
Sergey Protko
@fesor
Feb 07 2016 22:07
@siptik в чем тут унижение?
сапомис - это типа когда с нуля на plain php пишешь. Это глупо но не унизительно
“мутишь” если обидело… ну сорянчик)
JhaoDa
@jhaoda
Feb 07 2016 22:08
@siptik ну я могу тебе предложить покинуть это чат и пойти на какой-нить буржуйский чат. По словам всяких «обиженных» там им помогают всегда, какую бы дурь они не спросили
Victor Golovko
@siptik
Feb 07 2016 22:09
ну так вы же по факту обиделись))
JhaoDa
@jhaoda
Feb 07 2016 22:09
Хотя эти обиженные даже по-русски пишут с ошибками, как они могут что-то спросить на буржуйском и быть понятыми...
Nuzsk
@Nuzsk
Feb 07 2016 22:09
@siptik переходи на yii, там люди деликатнее и добрее
Sergey Protko
@fesor
Feb 07 2016 22:10
@Nuzsk и любят обмазываться хелперами и статикой, да?))
Andrei Sosnov
@atehnix
Feb 07 2016 22:10
:)
Nuzsk
@Nuzsk
Feb 07 2016 22:10
@fesor я тоже иногда не прочь хелпер-другой вмазать
atehnix @atehnix "объелся попкорном" )
fesor @fesor пошел добавлять хелпер
JhaoDa
@jhaoda
Feb 07 2016 22:12
@Nuzsk так ты ж yii-шник :)
Victor Golovko
@siptik
Feb 07 2016 22:13

Хотя эти обиженные даже по-русски пишут с ошибками, как они могут что-то спросить на буржуйском и быть понятыми...

Бывает и такое

Dave
@aios
Feb 07 2016 22:13
Что за шум а драки нет?
Sergey Protko
@fesor
Feb 07 2016 22:14
давайте лучше обсудим, кто-нибудь тут практикует continious delivery?
Victor Golovko
@siptik
Feb 07 2016 22:15
continuous
Sergey Protko
@fesor
Feb 07 2016 22:15
@siptik to be?
я безграмотный. мне можно
в частности вот какой вопрос интересует - как деплоитесь? Выбираете тег в git или еще как?
Victor Golovko
@siptik
Feb 07 2016 22:16
unfortunatly not
Dave
@aios
Feb 07 2016 22:19
@siptik https://pp.vk.me/c621616/v621616856/2874e/J7uLZJfKD4Q.jpg
@siptik хорошая фотка.)
@siptik да и дочурка у тебя симпатичная - похожи очень)
Victor Golovko
@siptik
Feb 07 2016 22:24
@aios Спасибо

только не понял

@siptik https://pp.vk.me/c621616/v621616856/2874e/J7uLZJfKD4Q.jpg

Dave
@aios
Feb 07 2016 22:24
я этот вопрос помню)
правда данные слегка подрихтованы.
Victor Golovko
@siptik
Feb 07 2016 22:25
чет не понимаю
Dave
@aios
Feb 07 2016 22:26
да ниче забей - нашел у тебя вконтакте фотку классную.
сохраню себе.
Victor Golovko
@siptik
Feb 07 2016 22:27
ты про прикол этот?
Dave
@aios
Feb 07 2016 22:27
да
Victor Golovko
@siptik
Feb 07 2016 22:27
я думал с наездами)
Dave
@aios
Feb 07 2016 22:27
не
если с наездами - то по другому)
не тут)
всем спокойной.
Victor Golovko
@siptik
Feb 07 2016 22:28
давай
А по поводу того хелпера, почему я не могу использовать "глобальный" статичный класс если там не хранится состояние
Victor Golovko
@siptik
Feb 07 2016 22:34
@jhaoda
Sergey Protko
@fesor
Feb 07 2016 22:35
@siptik почему не можешь, используешь же. Просто это не ООП а процедурщина называется. Ты используешь классы просто как нэймспейсы. В этом нет никакого смысла
в принципе если ты не передаешь контекст хранящий состояние, то это можно даже назвать функциональщиной, и тогда все было бы ништяк)
Victor Golovko
@siptik
Feb 07 2016 22:38
@fesor репозиторий вроде тоже как статичный класс
в чем разница
?
Sergey Protko
@fesor
Feb 07 2016 22:38
@siptik ммм в контексте ларавеля?
Victor Golovko
@siptik
Feb 07 2016 22:38
да
он же тоже возвращает данные
JhaoDa
@jhaoda
Feb 07 2016 22:38
С какой радости-то?
Sergey Protko
@fesor
Feb 07 2016 22:38
не уверен на 100% о каком тогда репозитории речь идет
типа статические-методы файндеры?
ну как бы никто не мешает сделать нормальные объекты (но если б их делали конечно)
Victor Golovko
@siptik
Feb 07 2016 22:39
UserRepository::getAllUsers
JhaoDa
@jhaoda
Feb 07 2016 22:39
@siptik ты где такое увидел?
Sergey Protko
@fesor
Feb 07 2016 22:39
@siptik ммм $userRepository->getAllUsers()
по другому паттерн “репозиторий” не имеет никакго смысла
JhaoDa
@jhaoda
Feb 07 2016 22:40
@siptik как инжектить статичный класс?
Sergey Protko
@fesor
Feb 07 2016 22:40
а в eloquent нет репозиториев, есть файдеры
Victor Golovko
@siptik
Feb 07 2016 22:40

В какой то статье.

по другому паттерн “репозиторий” не имеет никакго смысла
Согласен

JhaoDa
@jhaoda
Feb 07 2016 22:40
@fesor чо за файндеры?
Sergey Protko
@fesor
Feb 07 2016 22:41
@jhaoda штуки которые находят объекты
JhaoDa
@jhaoda
Feb 07 2016 22:41
@fesor ткни носом
Первый раз слышу про какие-то классы-файндеры в элоквенте
Sergey Protko
@fesor
Feb 07 2016 22:42
@jhaoda ну это типа User::find()
JhaoDa
@jhaoda
Feb 07 2016 22:42
@siptik не все статьи одинаково полезны
Victor Golovko
@siptik
Feb 07 2016 22:42
как я понял из суть репозитория- это класс, который возвращает ожидаемый тип данных независимо от того какой драйвер используется
JhaoDa
@jhaoda
Feb 07 2016 22:42
@fesor ты вообще не о том
Sergey Protko
@fesor
Feb 07 2016 22:42
@siptik это “объект"
а не класс
Nuzsk
@Nuzsk
Feb 07 2016 22:42
как же ларавельщики все усложняют, куча статей, умных слов :smile:
JhaoDa
@jhaoda
Feb 07 2016 22:42
@fesor ещё скажи, что это статика :)
Sergey Protko
@fesor
Feb 07 2016 22:42
@Nuzsk у тебя тоже файдеры)
@jhaoda ты про “файдеры”?)) ну блин я так называю штуки чье предназначение выборки делать
Victor Golovko
@siptik
Feb 07 2016 22:43
@fesor да, объект
JhaoDa
@jhaoda
Feb 07 2016 22:43
@fesor ну так это просто метод, а не отдлеьный класс
Nuzsk
@Nuzsk
Feb 07 2016 22:43
@fesor у меня просто active record, очень простое слово
Sergey Protko
@fesor
Feb 07 2016 22:43
@jhaoda но ты можешь отдельный сервис сделать если у тебя там сложная выборка
Nuzsk
@Nuzsk
Feb 07 2016 22:44
он что на java orm такой что на yii2 что в руби
JhaoDa
@jhaoda
Feb 07 2016 22:44
@fesor и вот этот сервис и будет репой
Sergey Protko
@fesor
Feb 07 2016 22:44
@Nuzsk у тебя там тоже не просто active record)
@jhaoda не не не, репозитории они как виртуальные хранилища
@jhaoda ну то есть… в каком-то смысле - да
но зона ответственности файдера - только выборки, а репозитория - выборки + хранение
Victor Golovko
@siptik
Feb 07 2016 22:45

но зона ответственности файдера - только выборки, а репозитория - выборки + хранение

да, ты прав

Sergey Protko
@fesor
Feb 07 2016 22:45
interface UserFinder { 
    public function find($id);
    public function findByUsername($username);
}

interface UserRepository extends UserFinder {
    public function add(User $user);
    public function remove(User $user);
}
вот думаю так понятнее
я немного сомневаюсь что делать репозитории с active record вообще разумно
Nuzsk
@Nuzsk
Feb 07 2016 22:46
я немного сомневаюсь что делать репозитории с active record вообще разумно
взаимоисключающие
JhaoDa
@jhaoda
Feb 07 2016 22:47
Шон, кстати, пишет, что репа ничего не должна сохранять
И ув. тов. greabock за это же ратует
Sergey Protko
@fesor
Feb 07 2016 22:47
@jhaoda кто такой Шон?)
JhaoDa
@jhaoda
Feb 07 2016 22:47
@fesor ссылка выше
Nuzsk
@Nuzsk
Feb 07 2016 22:48
@jhaoda а кто должен?
JhaoDa
@jhaoda
Feb 07 2016 22:48
@Nuzsk у меня этим команды занимаются
Sergey Protko
@fesor
Feb 07 2016 22:48
@Nuzsk репозиторий и должен
@jhaoda тогда у тебя обработчики команд это транзакционные скрипты
JhaoDa
@jhaoda
Feb 07 2016 22:48
@fesor у меня команды-самобранки
Sergey Protko
@fesor
Feb 07 2016 22:49
@jhaoda это мы уже выяснили)
A Transaction Script organizes all this logic primarily as a single procedure, making calls directly to the database or through a thin database wrapper. Each transaction will have its own Transaction Script, although common subtasks can be broken into subprocedures.
Nuzsk
@Nuzsk
Feb 07 2016 22:49
@jhaoda внутрянку покажешь?
как это извне репо выглядит
и внутри
JhaoDa
@jhaoda
Feb 07 2016 22:50
@fesor я нихрена не понял
@Nuzsk репа про сохранение ничего не знает вообще
Sergey Protko
@fesor
Feb 07 2016 22:50
@jhaoda а должна
Nuzsk
@Nuzsk
Feb 07 2016 22:50
@jhaoda она создает команду (new modelSave(model)).execute(); и отдает в неё модель?
Sergey Protko
@fesor
Feb 07 2016 22:50
@jhaoda ну как, просто если мы репозитории с active record юзаем, то тогда да, не должна, ибо будет хуже)
Nuzsk
@Nuzsk
Feb 07 2016 22:51
сохранением уже команда занимается?
JhaoDa
@jhaoda
Feb 07 2016 22:51
@fesor почему? Я считаю, что репа не должна сохранением заниматься
Sergey Protko
@fesor
Feb 07 2016 22:51
@jhaoda если у тебя active record - то да, а если data mapper - то должно
ибо кто-то должен
JhaoDa
@jhaoda
Feb 07 2016 22:51
Поэтому команда вызывается там, где надо. В контроллере, в консольной команде etc
Sergey Protko
@fesor
Feb 07 2016 22:52
@jhaoda я это называю “application-layer service"
JhaoDa
@jhaoda
Feb 07 2016 22:52
@fesor я не против, называй
Sergey Protko
@fesor
Feb 07 2016 22:52
тогда да, CLI, MQ, контроллеры - просто дергают сервис, который в твоем случае является еще и командой)
Nuzsk
@Nuzsk
Feb 07 2016 22:52
не понимаю
при чем тут контроллеры
репо это просто коллекция - если смотреть извне
мы туда помещаем модель, а дальше о её судьбе ничего не знаем
казалось бы...
JhaoDa
@jhaoda
Feb 07 2016 22:53
@Nuzsk я тебе два раза сказал, что репа НЕ занимается сохранением и ничего про команды не знает
Nuzsk
@Nuzsk
Feb 07 2016 22:53
@jhaoda что происходит после помещения модели в репо?
@jhaoda или они у тебя только на чтение работают?
JhaoDa
@jhaoda
Feb 07 2016 22:53
Репа занимается выборками. Да, это не совсем те репы, что имеют ввиду гуру. Простите.
Nuzsk
@Nuzsk
Feb 07 2016 22:53
а
вон оно что
Sergey Protko
@fesor
Feb 07 2016 22:53
@Nuzsk
  • запрос приходит в контроллер
  • контроллер формирует команду и отправляет ее на выполнение
  • обработчик команды выполняет команду и записывается данные напрямую работая с сущностями AR
  • контроллеру возвращается либо результат либо ничего.. мне нравится вариант с ничего
  • контроллер просит репозиторий достать ему сущность
  • контроллер возвращает результат
Nuzsk
@Nuzsk
Feb 07 2016 22:54
так бы и сказал
Victor Golovko
@siptik
Feb 07 2016 22:54
Мне казалось, что от репозиторий возвращает тот тип данных, который от него ожидают независимо от источника данных
JhaoDa
@jhaoda
Feb 07 2016 22:54
@siptik повтори это третий раз, а то мы не поняли
Sergey Protko
@fesor
Feb 07 2016 22:54
@siptik я ссылку привел на то, что такое “репозитории"
Nuzsk
@Nuzsk
Feb 07 2016 22:54
я думал, что ты имеешь в виду абстракцию коллекции, как обычно
а тут опять ларавельные придумки, фасад не фасад, репо не репо :smile:
Sergey Protko
@fesor
Feb 07 2016 22:54
@Nuzsk а я о чем)
JhaoDa
@jhaoda
Feb 07 2016 22:55
Никаких ларавельных придумок
Sergey Protko
@fesor
Feb 07 2016 22:55
@jhaoda да ладно
JhaoDa
@jhaoda
Feb 07 2016 22:55
Где вы видели в ларавель репы? Нигде.
Sergey Protko
@fesor
Feb 07 2016 22:55
@jhaoda а фасады почему фасадами назвали?
JhaoDa
@jhaoda
Feb 07 2016 22:55
@fesor к Тэйлору вопрос
Sergey Protko
@fesor
Feb 07 2016 22:56
@jhaoda так это, в ларавели мы реп не видем, так как тогда называть то что там какой-то Шон говорит?
JhaoDa
@jhaoda
Feb 07 2016 22:57
@fesor а что, если чего-то нет в ларавель, то нам это юзать нельзя?
Или можно, но толок с хлебом канонично, как всеблагой Фаулер сказал?
Sergey Protko
@fesor
Feb 07 2016 22:58
@jhaoda не, я придираюсь к семантике используемых терминов
слово “репозиторий” подразумевает что мы не только доставать оттуда можем, но и ложить
а вот “искатель” для выборок подходит лучше)
и тогда в эквиланте все хорошо
все как фаулер завещал)
JhaoDa
@jhaoda
Feb 07 2016 23:00
@fesor хочешь переубедить всё ларавель-сообщество или только этот чат?
Sergey Protko
@fesor
Feb 07 2016 23:00
@jhaoda ну с фасадами я уже точно проиграл
@jhaoda просто из-за неверного именования вещей и так уже много чего полетело
Nuzsk
@Nuzsk
Feb 07 2016 23:01
@jhaoda простая цепочка: [репозиторий -> паттерн -> нужен для легкого описания архитектурного приёма -> требуется упоминать с общеупотребимом значении]
JhaoDa
@jhaoda
Feb 07 2016 23:01
@fesor у меня ничего не полетело
Victor Golovko
@siptik
Feb 07 2016 23:01
Ребята, правильно ли я понял, репозиторий это "хранилище", в которое можно добавить, удалить, найти. Правильно я понимаю?
Роман Сохарев
@greabock
Feb 07 2016 23:02
У нас тут с год назад примерно сходка была, тогда-то мы и решили, что репозиториев с active record не бывает )
Sergey Protko
@fesor
Feb 07 2016 23:02
@siptik да
@greabock ну как бы это логично, и не надо даже пытаться их делать
ибо active record это когда мы берем сущность + row data gateway и мерджим это вместе
Роман Сохарев
@greabock
Feb 07 2016 23:02
именно по этому, мы теперь всё называем сервисами ))
Sergey Protko
@fesor
Feb 07 2016 23:03
@greabock а вот это… сомнительная вещ)
“модели” уже назвали “моделями"
JhaoDa
@jhaoda
Feb 07 2016 23:03
@greabock и ты проиграешь
Sergey Protko
@fesor
Feb 07 2016 23:03
потеряв приставку “domain"
Роман Сохарев
@greabock
Feb 07 2016 23:03
тут короч, не надо путать модели и сущности )
Nuzsk
@Nuzsk
Feb 07 2016 23:03
@fesor а где отличия у DomainModel и у Model?
Sergey Protko
@fesor
Feb 07 2016 23:04
@Nuzsk отличий нет, модель это просто более общий термин
Nuzsk
@Nuzsk
Feb 07 2016 23:04
@Nuzsk отличий нет, модель это просто более общий термин
понял
Sergey Protko
@fesor
Feb 07 2016 23:04
@Nuzsk ну просто поскольку он более общий - это вводит людей в заблюждения частенько
особенно когда начинают разговаривать о MVC и кто там за что отвечает
в итоге сбитый с толку народ начинает писать километровые контроллеры
Роман Сохарев
@greabock
Feb 07 2016 23:05
@fesor 2200, я пока больше не видел
Sergey Protko
@fesor
Feb 07 2016 23:06
@greabock ?
Роман Сохарев
@greabock
Feb 07 2016 23:06
строк говнокода конечно же )
Sergey Protko
@fesor
Feb 07 2016 23:06
неплохо)
я такие воспоминания стараюсь подавлять
правда у тупого говнокода есть очень крутое преимущество перед говнокодом из-за непонимания паттернов
его рефакторить проще
Victor Golovko
@siptik
Feb 07 2016 23:09
дайте ссылку на хорошую книгу по паттернам плиз
Sergey Protko
@fesor
Feb 07 2016 23:09
@siptik PofEAA
но лучше до этого почитать чего по SOLID
и в целом почитать что же такое ООП
Nuzsk
@Nuzsk
Feb 07 2016 23:11
или кодить как кодится
Sergey Protko
@fesor
Feb 07 2016 23:11
ну тоже верно
Victor Golovko
@siptik
Feb 07 2016 23:11
@fesor @Nuzsk ну че ж вы опять начинаете
Sergey Protko
@fesor
Feb 07 2016 23:12
@siptik ввообще лучше TDD нежели паттерны учить, тогда они сами собой будут вырисовываться
в целом Алан Кей бы грустил видя как юзают его идеи PHP-ники(
Роман Сохарев
@greabock
Feb 07 2016 23:16
в целом Алан Кей бы грустил видя как именно юзают его идеи PHP-ники
а так-то бы чего ему грустить )