• Правильно ли реализовал подключение к БД?

    @xfg
    echo "Не удалось подключиться к MySQL: {$db->connect_error}";

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

    Зашивать подключение в модель - плохо. Лучше для этого создать отдельный класс Connection. Вместо mysqli лучше использовать PDO, не завязываться на конкретную базу.

    Вместо сырых SQL запросов лучше взять готовый DAO класс или написать свой, чтобы не зависеть от синтаксиса SQL запросов конкретной базы.

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

    Вообще стоило бы почитать про GRASP и SOLID. Наследование не всегда хорошо, иногда лучше использовать композицию и зависеть от абстракций, а не от конкретных реализаций. Тогда будет возможность полиморфно заменять одну реализацию на другую, не ломая OCP из SOLID.

    Посмотрите лучше любой популярный фреймворк, чтобы понять как и что примерно работает.
    Ответ написан
    4 комментария