Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (8)

Наибольший вклад в теги

Все теги (40)

Лучшие ответы пользователя

Все ответы (75)
  • Нужно ли защищать обработчик формы (PHP файл) от прямого доступа?

    Ninazu
    @Ninazu
    1. Создай единую точку входа, и оставь ее в корне сайта, остальные файлы вынеси за пределы (Это не только сделает твое приложении более гибким, понятным, и структурированным, но и в случае отваливания веб сервера, такое когда-то у меня было, после кривого обновлении до php7, исходный код показывался браузером)
    2. Не забудь про SQL иньекции. Никакой конкатенации или вставок PHP. Только плейсхолдеры и байндинг
    3. Если есть возможность загружать файлы, нужно исключить возможность исполнения в этой папке.
    Ответ написан
  • Почему PhpStorm требует установки расширения для curl и json?

    Ninazu
    @Ninazu
    Расширение - это дополнительные модули в PHP, они реализуют конкретно в вашем случае работу с CURL и JSON.
    Узнать подключенные модули
    https://www.php.net/manual/ru/function.extension-l...
    Список всех модулей
    https://www.php.net/manual/ru/extensions.alphabeti...

    Если на вашем сервере они установленны, то не факт что они будут установленны и на другом сервере. Поэтому PHPStorm рекоммендует добавить их в правила композера, чтоб в случае разворачивания на другом сервере, композер сообщил вам что расширения отсутсвуют

    Если бесит инспектор, то можете отключить это уведомление.
    5d4061ba05631701466003.png
    Ответ написан
  • Какая реализация дерева лучше?

    Ninazu
    @Ninazu
    Все зависит от того зачем вам это дерево.
    1. Это Adjacency List, он хорош когда вам нужно часто писать в дерево и редко его читать.
    2. Это Nested Set, он хорош когда вам нужно часто читать дерево и редко в него писать.

    Для того чтоб построить часть дерева по первому варианту вам нужно либо вытаскивать ВСЕ записи из базы, и потом рекурсивно проходится по ним и строить его, либо писать встроенную процедуру для того чтоб рекурсия была на стороне базы данных. Также нужно следить чтоб не возникало циклических зависимостей в айдишниках

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

    Лично я использую первый вариант для дерева комментариев, а второй для меню сайта. Хотя деревья всегда есть смысл кэшировать.
    Ответ написан
  • Чем отличаются миграции от доктрины?

    Ninazu
    @Ninazu
    Миграции - это последовательность модифицирующих запросов к базе.
    Доктрина - это ORM, способ работы с реляционными данными через обьекты.

    P.S. Не рекоммендую делать миграции на базе ORM. Представим сценарий миграции
    1. Создать таблицу пользователей
    2. Переименовать таблицу пользователей в клиентов
    3. Добавить столбец с таблицу клиентов.

    ORM представляет из себя проекцию текущего состояния структуры базы. Поэтому повторить миграции на другом базе, состояние которой находится на первом этапе не получится, так как маппинг кода будет ссылатся на третий шаг
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (54)