За последние 24 часа нас посетили 17934 программиста и 1566 роботов. Сейчас ищут 850 программистов ...

Рефакторинг

Тема в разделе "Сделайте за меня", создана пользователем andrew_woods, 20 ноя 2022.

Метки:
  1. andrew_woods

    andrew_woods Новичок

    С нами с:
    20 ноя 2022
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте!
    Есть суперкласс IndexController.php который сейчас делает все, в том числе и ходит в БД. Нужно вынести походы в БД в отдельный класс, чтобы разделить ответственность. Как это сделать? Я не сильно понимаю, нужен кто-то кто объяснит.
    Код тут: https://pastebin.com/PFnUHk3f
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.793
    Симпатии:
    1.330
    Адрес:
    Лень
    6лядь вот пи3дят скрипты с простор и бегут сразу на форумы/паблики, стопку тем посоздадут, а потом в носу ковыряют фразу "Я не сильно понимаю". Да ты ни*уя не понимаешь что там вообще написано.


    Изучи модели, изучи паттерны проектирования архитекуры приложения, что такое контроллеры/модели/сервисы/сущности
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    @andrew_woods можно конгечно объяснить, но ты не сильно поймешь.
     
  4. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    920
    Симпатии:
    143
    @andrew_woods, если надо прям MVC, его читай, а так можно сделать класс DataAccessLayer, в который обернуть все обращения к БД.
     
  5. mrvalter

    mrvalter Активный пользователь

    С нами с:
    23 сен 2011
    Сообщения:
    3
    Симпатии:
    0
    Это же Ларавель. Создайте сущность "Сообщение". И дергайте все по документации. Я так понимаю вам нужно уйти от запросов напрямую. Это Eloquent модель.
    Смотрите в строну роутера, там нужно обозначить модель, которая передается в контроллер.
    После этого добавьте параметр в метод контроллера желательно с описанием класса
    function getMessage(Request $request, Message $message)

    Либо просто в начале файла контроллера
    use App\Models\Message;

    а в самом методе контроллера
    public function sendMessage(Request $request) {
    $message = $request->input('message');
    //вместо $msg_id_query = \DB::select('SELECT id FROM messages WHERE msg_text = ? LIMIT 1',
    $Message = Message::where('msg_text', $message)->first();
    $id = Message->id;
    }

    Вот как раз Message и будет тем осколком классов которые работают с БД. Это как по документации.
    Если вы хотите сделать свой DataMapper то для чего вам ларавель ?
     
    #5 mrvalter, 3 дек 2022
    Последнее редактирование: 3 дек 2022