Создание блога

artoodetoo

великий и ужасный
Дак он уже написан.
Хорошо. Может быть я неудачно выразился. У улучшения должна быть внятная цель. По последним сообщениям я не понимаю что за задачу ты решаешь в данный момент. Перекладывание кода в какой-то класс это не цель всё-таки, а средство.
Перечитывать всю тему из 15и страниц длиною в год я смысла не вижу. Опубликуй код на гитхабе, распиши roadmap с целями и в коментариях давай ссылки на отдельные коммиты или на PR.

Если тебе нужен слой поверх низкоуровневых запросов, логично назвать его "пользовательские сообщения" или "новостная лента", например. Никак не "запросы к модели post". ПМСМ так. В именовании классов и разделении зон ответственности исходи из задач предметной области, а не из атомарных действий.
 
Последнее редактирование:

firep91613

Новичок
У улучшения должна быть внятная цель. По последним сообщениям я не понимаю что за задачу ты решаешь в данный момент.

Перечитывать всю тему из 15и страниц длиною в год я смысла не вижу.
Дак и не надо, там страниц 10 наверно бесполезная возня с ванильным PHP.

Если тебе нужен слой поверх низкоуровневых запросов
Я что-то не понял про низкоуровневые запросы. У ларавел же ORM, квери билдеры.
 

firep91613

Новичок
Никак не "запросы к модели post". ПМСМ так. В именовании классов и разделении зон ответственности исходи из задач предметной области, а не из атомарных действий.
Почему так то плохо? Названия же отображают суть классов. Запросы к конкретной таблице.
 

Вложения

Valick

Новичок
В именовании классов и разделении зон ответственности исходи из задач предметной области, а не из атомарных действий.
Почему так то плохо? Названия же отображают суть классов.
Влад Хононов - Изучаем DDD - предметно ориентированное программирование.
Какие из книг которые я вам рекомендовал вы уже прочитали? 😉
 

firep91613

Новичок
Ну, товарищ Валик, не все так просто. У меня же еще учеба и я еще изучаю Си. Поэтому у меня один вечер уходит на блог, а другой на Си. И не всегда еще есть время по вечерам. У меня было относительно свободное время в июле и августе. Но в это время я активно занимался фронтом для блога. Всю верстку и скрипты я делал сам, без всяких нейронок и готовых плагинов. На это тоже ушло много времени. Сейчас у меня опять мало времени. И если мне читать это DDD, то мне придется перестать писать код на пару месяцев, а то и больше. И документацию ларавел я еще не до конца дочитал. Когда прикажете читать это DDD?
 

Valick

Новичок
Я ничего никому не приказываю, более того даже не уговариваю. Вы жалуетесь на нехватку времени, но не понимаете почему у вас его не хватает. А потому, что изобретаете велосипеды, вместо получения готовой информации проверенной сотнями тысяч читателей. В вашем случае перестать писать код и сесть за изучение принципов архитектуры самый идеальный вариант.
Моё сообщение написано в ноябре 24-го года, вот и представьте столько времени вы уже потеряли.
 

AmdY

Пью пиво
Команда форума
Лучше DDD оставь на потом, там опытные программисты ноги ломают, тем более с Laravel.
Но ты действительно очень-очень долго пишешь, за это время уже до тимлидов дорастают )
 

firep91613

Новичок
Лучше DDD оставь на потом, там опытные программисты ноги ломают, тем более с Laravel.
Ну вот.. Зря только первую главу прочитал (
Но ты действительно очень-очень долго пишешь
Не, ну можно как большинство ларавельщиков пихать все в контроллеры, везде юзать статику и ни о чем не думать. Взять эту Admin LTE уже сверстаную, на фронт тоже скачать какой-нибудь шаблон. Вместо нормальных скриптов притянуть жиквери и юзать готовые плагины. Тогда можно и за пол дня написать.
 

Valick

Новичок
Лучше DDD оставь на потом, там опытные программисты ноги ломают
Я согласен, DDD сложная штука, особенно когда от теории переходишь к практике. На самом деле рекомендуемая книга это третья книга по DDD которуя я смог таки прочитать от начала до конца. Сначала был Вон Вернон "Предметно-ориентированное программирование. Самое основное". Читать трудно. Прочитал, но мало что понял возможно из-за того это выжимка. Потом была "синяя книга" Эванса. Бросил на половине, потому что при чнтении начинала жутко болеть голова. Вот где действительно вынос мозга. Некоторые рекомендуют читать именно в оригинале, так как перевод оставляет желать лучшего. Но дело немного в другом. Постоянные отвлечения от темы (ну зачем меня в середине книги пятисотый раз убеждать, что мне обязательно надо прочитать эту книгу). Постоянные перескоки вперёд-назад аля "а зачем это нужно мы узнаем в конце восьмой главы" хотя я читаю только третью. Поэтому Влад Хононов, где всё по порядку и с соответвующими картинками, лично для меня оказался гораздо более понятным. Эванса вряд ли я когда-нибудь снова возьмусь читать, а вот Вернона скорее всего пойду на второй заход.
 
Последнее редактирование:

firep91613

Новичок
Я снова забуксовал. Нигде не могу найти как реализуют поиск по сайту. На гитхабе все под копирку - один экшен, где просто ищут по какой-нибудь таблице (посты, юзеры). Нашел один трейт, но он очень страшный.

У меня сейчас такой класс, но ясное дело что он инвалидский. Первый экшен, это когда в инпут в форме пишут. Все остальные это когда нажимаешь на ссылку (для категорий, к примеру, <a href="http://localhost:8080/search/category/12" class="post__category">Бредские идеи</a>). Все экшены, кроме первого - одно сплошное дублирование, впрочем и первый тоже.
PHP:
final class SearchController extends Controller
{
    const ACTION_INDEX = 'public.search.index';
    const PER_PAGE = 5;

    public function __construct(
        protected ViewFactory $view
    ) {}

    public function posts(Request $request, PostQueries $postQueries, Redirector $redirect): View|RedirectResponse
    {
        if ($request->isNotFilled('search')) {
            return $redirect->back()->with('error', 'Введите поисковый запрос');
        }

        return $this->view->make(self::ACTION_INDEX, [
            'posts' => $postQueries->search($request->input('search'), self::PER_PAGE)
        ]);
    }

    public function user(User $user, UserQueries $userQueries): View
    {
        return $this->view->make(self::ACTION_INDEX, [
            'posts' => $userQueries->search($user, self::PER_PAGE)
        ]);
    }

    public function category(Category $category, CategoryQueries $categoryQueries): View
    {
        return $this->view->make(self::ACTION_INDEX, [
            'posts' => $categoryQueries->search($category, self::PER_PAGE)
        ]);
    }

    public function tag(Tag $tag, TagQueries $tagQueries): View
    {
        return $this->view->make(self::ACTION_INDEX, [
            'posts' => $tagQueries->search($tag, self::PER_PAGE)
        ]);
    }
}
Как быть? По идее нужно только два метода. Но если их будет два, то второй будет слишком раздутым, поскольку поиск по тегам, категориям, юзерам.
 

Valick

Новичок
 

AmdY

Пью пиво
Команда форума
Я снова забуксовал. Нигде не могу найти как реализуют поиск по сайту. На гитхабе все под копирку - один экшен, где просто ищут по какой-нибудь таблице (посты, юзеры). Нашел один трейт, но он очень страшный.
Вот поэтому надо читать документацию полностью, есть готовое решение внутри самого ларавел https://laravel.com/docs/master/scout
 
Сверху