Борьба с дублированием кода

155
22 декабря 2017, 03:00

Опытные коллеги, подскажите. Я разрабатываю небольшой движок для сайта на основе MVC. У меня есть набор контроллеров, моделей и вьюшек, все как полагается. Но есть проблема с дублированием методов. Конкретнее - у меня есть контроллер UserController у которого есть экшн checkUser, который обращается к модели User::checkUserHash которая просто вытаскивает строку пользователя из базы по id куки пользователя. Вот код метода сheckUserHash модели User

public static function checkUserHash($cookie_id)
{
   # соединение с БД 
   $db = DB::getConnection();
   # Проверяем хэш куки на совпадение значение в БД
   $query = $db->query("SELECT * FROM users WHERE user_id = '".$cookie_id."' LIMIT 1");
   $query->setFetchMode(PDO::FETCH_ASSOC);
   $data = $query->fetch();
   return $data;
}        

И у меня есть контроллер LoginController у которого тоже есть экшн checkUser который обращается к модели Login::checkLogUserHash , так вот в методе Login::checkLogUserHash мне нужен абсолютно такой же функционал, как и в методе User::checkUserHash, получается два одинаковых метода с разным именем.

Конечно можно просто подключить файл модели User к контроллеру LoginController и использовать его методы, но насколько я понимаю это противоречит философии MVC . Что у каждого контроллера должна быть своя модель и вьюшка.

Подскажите как быть?

Answer 1

Controller:

    <?php
    class Controller {
         public function checkLogUserHash()
         {
            // \Login::checkLogUserHash();
         }
    }

UserController

    <?php
    class UserController extends Controller {
    }

LoginController

    <?php
    class LoginController extends Controller {
    }

далее думаю все понятно:

    $userController = new UserController();
    $userController->checkLogUserHash();
    $loginController = new LoginController();
    $LoginController->checkLogUserHash();
READ ALSO
Как определить размер базы данных mysql

Как определить размер базы данных mysql

Есть ли способ узнать подробную информацию о базе данных, используя PHP или MySQL запрос? Интересуют базовая инфа, Размер БД, количество записей,...

202
Проблема с дочерней темой Wordpress

Проблема с дочерней темой Wordpress

Имеется тема Impreza, нужно подключить файл дочерней темы в подпапке /framework/functions/widget_areasphp

231
внутренний счетчик массива

внутренний счетчик массива

Существует ли какой-то способ сбросить внутренний счетчик массива? (ну или как оно называется, не знаю)

181