Задать вопрос
Ответы пользователя по тегу PHP
  • Как правильно организовать класс сервис, который будет использовать множество последовательных функций в рамках выполнения задачи?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Далеко не всегда стоит разбивать класс ради красоты и т.д. Выносить отдельно стоит вещи которые вы сможете как-то использовать отельно. В противном случае вы только вынесете сложность на уровень взаимодействия классов, а поддержка не упростится.

    Если у вас получится выделить общий интерфейс для части обработчиков - попробуйте их вынести отдельно. Если же интерфейс прийдется корректировать под каждый случай - лучше не стоит.

    То, что вам точно поможет - это убрать всё лишнее. Например уровень работы с файловой системой в парсере не нужен, его стоит сразу отделять. Как вариант можете так же разделить парсинг по этапам: например первый этап на базе неких данных строит их модель. наполняя некую модель данных. Впторой этап - пост процессинг, на вход берет модель данных и обрабатывает.
    Ответ написан
    Комментировать
  • В чем причина странного поведения PHP?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Похоже на БД. Посмотрите нагрузку цпу/рам/то на сервере с БД. Так же не лишним будет посмотреть лог медленных запросов и процесс лист. Если наблюдаются сильные тормоза при вставке, посмотрите загруженность буфера бд.
    Ответ написан
  • Возможно ли закрыть файл, открытый через include?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Угу, за счёт его не открывания. В случае, если вы не изменяли файл и не отключали opcache, ваш файл будет читаться один раз, потом браться из кэша.
    Ответ написан
    Комментировать
  • Для каких проектов использовать CMS а для каких писать свою админ панель на yii2 or laravel?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Зависит от задачи. Если CMS в большей части решает задачу, юзайте CMS. Если нет, лучше юзать фреймворк. Например для бложика я бы взял wp, для визитки - modx, для простенького эл. магазина либо prestashop, либо порекомендовал бы готовую платформу. Для системы продажи и учёта билетов - фреймворк.
    Ответ написан
    Комментировать
  • В чем может быть проблема у простого php-роутера?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Но когда видишь библиотеки в несколько килобайт, то вопрос чем простая регулярка плоха и чего она не учитывает?

    Вопрос сложности поддержки. Если у вас всего один паттерн для вообще всех роутов - не вопрос, юзайте регулярку.
    Если же вам нужно множество паттернов роутов - тут тоже можно одной регуляркой, но ее сложность будет расти экспоненциально и проще уже будет пройтись по списку регулярок. Еще часто требуется проверять метод запроса, т.е. циклов у вас будет уже по больше. Ну конечно же желательны плюшки типа параметров например /user/{userId}/settings, но это так, к слову. Учитывая что роутер отрабатывает на каждый запрос - стоит его сделать по быстрее. Symfony роутер например компилирует все ваши роуты в микс бинарных деревьев с регулярками, не знаю есть ли другие на столько же производительные и функциональные решения.

    Что касается нескольких килобайт - не парьтесь, вот вообще. Всё равно в результате будет меньше, еще и лежать в op кеше.
    Ответ написан
    Комментировать
  • Почему PMA не работает из-за Symfony?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    7.2 - древняя версия, официально не поддерживаемая. Хотя бы 8-ку установите
    Ответ написан
    Комментировать
  • Как сделать кастомный mysql запрос от пользователя?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    По хорошему лучше так не делать. Разбор синтаксического дерева - это довольно сложная задача и ее стоит решать в крайнему случае.
    Я бы рекомендовал ввести по полю на все ваши возможные фильтра и уже их использовать для построения запроса. Например: id (id = ), amountFrom (amount >=), createdAtFrom (createdAt >=),... Каждый фильтр объединяет в себе операцию и поле табицы. Да, прийдется перечислить все ваши поля и операции, но это решение самое простое в поддержке.

    Так же вы можете передавать массив фильтров, в стиле: [field, operation, value].
    На этапе обработки вы сможете относительно легко проверить и название поля, и операцию (>,<,=,!=,...), и заэкранировать значение. Вложенные условия будут уже сложнее.
    Ответ написан
    Комментировать
  • Как синхронизировать в HttpFoundation глобальные переменные?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Объект Request по хорошему стоит воспринимать как иммутабельный и вообще не производить с ним ни каких изменений. Установка кук - это задача Response. Жабы отдельно, гадюки отдельно.
    Ответ написан
    7 комментариев
  • Как лучше хранить данные при пошаговой регистрации?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Всем привет. Хочу сделать пошаговую регистрацию на сайте. Как бы это сделать правильнее?

    Если есть возможность - просите минимум, например почту и пароль, в идеале - вообще через google, или еще что-то подобное, fb например.
    Уже потом запрашивайте данные которые вам нужны для конкретных действий.
    С точки зрения пользовательского опыта вероятно это будет самый лучший сценарий.

    1. После каждого шага сохранять в БД? Много запросов бессмысленных

    Оптимизируйте там, где есть узкое горлышко, а не там где его нет.

    2. Хранить в сессии?
    3. LocalStorage?

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

    4. Куки?

    нет.
    Ответ написан
    Комментировать
  • Headerless cms на базе Laravel можно/нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    С технической точки зрения ларка безусловно поможет сделать cms.
    С бизнес точки зрения вы точно должны понимать, почему существующие решения вам не подходят. Если этого понимания нет, есть очень большая вероятность того, что вы напшете оередной никому не нужный велосипед
    Ответ написан
    Комментировать
  • Как написать свой аналог DOCS в Yii2?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    C нуля если у вас не завалялось несколько лямов вечено зеленых инвестиций, даже начинать не стоит.
    Как альтернатива - можете посмотреть в сторону Onlyoffice, правда там не точто Yii2, там даже про php думать не стоит.
    Ответ написан
    4 комментария
  • Зачем нужны объявления типов php?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Тайп хинтинг нужен, что бы уменьшить количество ошибок, в идеале со строгой декларацией типов.

    Что будет, если вы запихнете в функцию обрабатывающую строки например объект? В случае явного указания типа вы получите исключение. Если этого не делать поведение полностью зависит от тела функции, и худшим сценарием будет не правильный результат без ошибок и исключений. Подобные проблемы может быть очень сложно отследить
    Ответ написан
    Комментировать
  • Cron или планировщик заданий mySQL?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Чем меньше логики на стороне БД вы будете держать - тем проще вам будет с этим жить
    Ответ написан
    Комментировать
  • Что может содержать DTO?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Dto - data transfer object, его задача - это передать данные. Ваш тимлид говорит верно, дто не должен содержать ничего другого кроме данных и тайпхинтинга.

    Json у вас получится в какой-то точке кода, вероятно взаимодействующей с внешним миром: хттп, бд, файлы и т.д. вот именно в этой точке вам и следует делать пасинг и наполнение вашего дто
    Ответ написан
    Комментировать
  • Тормозят ли публичные сервисы в Symfony инициализацию приложения?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Инициализация, что публичных, что приватных - ленивая.
    Ответ написан
    Комментировать
  • Когда стоит начинать изучать ООП в PHP?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Сейчас самое время начать))
    Ответ написан
    Комментировать
  • Существует ли утилита, чтобы запускать несколько версий PHP в Ubuntu (вроде NVM для Node.js)?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Юзайте докер с версией пыхи под конкретный проект и будет вам счастье
    Ответ написан
    2 комментария
  • Поиск по фразам PHP (preg_match)?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
  • Как правильно покрыть тестами приведенный в примере код?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    https://github.com/index0h/php-conventions#7-тести...

    Конкретно по коду:
    1. Не стоит упарываться по разбиванию всего на отдельные методы. Фактическую сложность вы не уменьшите, вместо этого заставите инженера, который будет это смотреть бегать по классу что бы связать как-то ваши однострочники. Конкретно в вашем случае стоит сделать всего один метод getValue, а то что вы разбрасали по защищенным - запихнуть в getValue.

    2. Инстансы db и timedate стоит передавать в конструктор явно, а от статики отказываться, на сколько это возможно.
    Ответ написан
    4 комментария