Ответы пользователя по тегу PHP
  • Почему юнит-тесты PHP запускают из командной строки?

    werevolff
    @werevolff
    Зачем вам нужны юнит-тесты, если вы не понимаете что это такое?

    Тесты в PHP запускаются в консоли по той же причине, что и во многих других языках. Надо понимать, что PHP начинал не как настоящий язык программирования, а как шаблонизатор для cgi приложений. Сейчас PHP представляет собой язык программирования. То что вы используете его в качестве шаблонизатора на своём маке, чести вам не делает.

    И, да, мампы, лампы и вампы - не лучший вариант для программистов PHP, которым нужны юнит-тесты. Попробуйте Docker или Vagrant.

    И ещё маленькое дополнение: PHP имеет низкий порог вхождения. Это означает, что большинство простых пользователей компьютера с минимальным трудом смогут создать на нём страничку. Им юниттесты точно не нужны. Как и большинству разработчиков, которые делают сайты на CMS или фреймворках. А тем, кому реально нужны тесты, не нужен WebUI для них.
    Ответ написан
    Комментировать
  • Как правильно спроектировать базу и составить SQL запросы?

    werevolff
    @werevolff
    Если это не учебное задание, используйте, пожалуйста, ORM. Сейчас никто не работает с голым SQL на таких задачах. Потому что, во-первых, трудно разбираться с чужой реализацией шаблонных механизмов открытия/закрытия соединения, обращений к таблицам. Во-вторых, следует решать проблемы проектирования данных, а не реализации их записи в БД. Если задача учебная, то схема стандартная и мне нравится. Всё правильно нарисовано. Реализуется так же, как и любая ORM:

    1. Создаём класс коннектора БД. Описываем в нём методы прямой записи в БД и удаления записей.
    2. Создаём классы Comment и Category. Пусть у них будут методы get, update, delete, create. например get(id) получает из коннектора raw с данными и преобразует в ассоциативный массив. Там же реализуется получение полей связанной категории. Ну и метод delete у Comment запускает метод delete у Cаtegory, удаляя и Comment, и Category, и cat_id.
    Ответ написан