Ответы пользователя по тегу PHP
  • Как правильно завершить работу скрипта PHP?

    Decadal
    @Decadal
    >Существуют ли другие способы пропустить выполнение die() или исключения следует обрабатывать иначе? Если да, то как?

    замените die на return и поменяйте его местами с print_r. Вам на самом деле не нужно насильно обрывать работу php - как только код выполнится, обработка запроса завершится сама.
    Если вы опасаетесь что где-то ниже по коду выполнится какое-то действие, которое должно выполниться только в случае успешного завершения - добавьте туда дополнительное условие которое будет проверять результат, либо перехватывайте исключение именно там, а в catch оставьте пустоту. И всё будет хорошо.
    Ответ написан
    4 комментария
  • Мобильное приложение на базе Интернет магазина?

    Decadal
    @Decadal
    коротко: да, реально, но сложно.

    для мобильного приложения нужно делать отдельную апишку, особенно если у вас MPA, в котором в ответах от бекенда генерируется html а не json.

    Реально ли сделать быстрое приложение?

    Правильный вопрос таков: реально ли найти специалистов, которые готовы сделать быстрое приложение и быстрый бекенд в заданных условиях? Скорость работы приложения зависит как от организации поставки данных на бекенде, так и от внутренней оптимизации.

    Хотелось бы создать приложение существующего интернет магазина, не переделывая и не переписывая с нуля сайт.

    надеюсь, эта фраза не означает "мы ничего не будем делать на бекенде". Дописывать под потребности мобильного приложения придётся 100%.
    Ответ написан
    3 комментария
  • Как примерно лучше реализовать?

    Decadal
    @Decadal
    Есть несколько способов. Из дешёвых - cron на секунду, который каждую секунду запускает скрипт и проверяет лоты. У такого варианта есть ограничения - он должен отрабатывать очень быстро.
    Можно обойтись timestamp-ами в базе и раз в некоторое время выбирать все истекшие лоты за последний неотработанный отрезок времени, ограничив также какое-либо взаимодействие с истекшими лотами в остальных частях системы.
    Ответ написан
    9 комментариев
  • Как в MVC правильно связать Controller и Model?

    Decadal
    @Decadal
    MVC это про идею, не про реализацию.
    Вы можете реализовать через глобальный контейнер, если приложение не предполагается развивать и поддерживать большой командой. Можете упороться и сделать гибкую, продуманную конфигурацию оркестрации контроллерами, моделями и вьюхами и получить свой вариант Симфони. Техническая правильность решений уступает целесообразности их реализации.
    Ответ написан
    Комментировать
  • Чья обязанность проверять переменные(isset)?

    Decadal
    @Decadal
    в MVC нет чёткого определения, куда отнести валидацию. В то же время, MVC не описывает абсолютно всё приложение, только идею. В популярных фреймворках типа Symfony и Zend есть специальные штуки - формы, которые собирают в себя массив пришедших данных, а возвращают заполненный объект, если данные прошли проверку, либо возвращают массив ошибок. Часто практикуют использование формы в контроллере: там сеттятся данные из реквеста в форму, затем происходит проверка формы на наличие ошибок, и если они есть, контроллер возвращает сообщение об ошибке, иначе забирает заполненный объект с данными и передает его в нужный сервис.
    Ответ написан
    Комментировать
  • Как получить переменную php?

    Decadal
    @Decadal
    $props = json_decode($result['properties'], true);
    echo $props['userdata']['phone'];
    Ответ написан
    Комментировать
  • Построчный вывод данных БД. Как это сделать?

    Decadal
    @Decadal
    Код, который составлен на php, работает полностью корректно.
    Некорректно отображение вывода.
    Вам нужно разделять каждый вывод строки HTML разметкой, чтобы был визуальный эффект
    К примеру:

    // здесь завершается php
    ?>
    <table>
    <?php 
    while($row = mysqli_fetch_assoc($res)) : 
    ?>
    <tr><td>
    <?= $row['headline'];?>
    </td></tr>
    <?php endwhile;?>
    </table>
    Ответ написан
    9 комментариев
  • Как посчитать количество выполненых задач каждым работником в JS?

    Decadal
    @Decadal
    Тоже через команды MySQL

    есть агрегирующая функция COUNT в sql.
    select COUNT (1) from completed_tasks ct WHERE ct.user_id= "конкретный айди пользователя"
    если нужно считать по каждому пользователю, то есть способы сгруппировать записи по идентификатору пользователя, например GROUP BY ct.user_id
    Если вы уже взялись за базы данных и PHP то знайте, что задачи статистики, группировки и всего такого - почти всегда лежит на базах данных и серверных языках.
    Ответ написан
    1 комментарий
  • Как работает функция построения дерева?

    Decadal
    @Decadal
    if(!$node['parent']) {
          $tree[$id] = &$node;
        }

    если у текущего элемента нет предка, значит, вы помещаете текущий элемент в $tree по ссылке. То есть, изменение этого элемента в $tree повлияет на $dataset и наоборот, изменив этот элемент в dataset вы измените tree.
    рекомендую заменить первую строку в фрагменте кода, который я выделил, на if(!isset($node['parent'])) {
    далее:
    $dataset[$node['parent']]['childs'][$id] = &$node;

    если предок есть (то есть, это не рутовый элемент), вы добавляете в изначальный dataset информацию о том, что у его элемента, идентификатор которого равен предку текущего элемента, есть child, и заносите туда текущий элемент. Поскольку перед этим вы сохранили в tree элемент node по ссылке, то эта операция также изменит и структуру переменной tree.
    Обратите внимание, что, убрав & из выделенного фрагмента, вы получите тот же результат, что и с ним.
    Ответ написан
    1 комментарий
  • Какой подход использовать для взаимодействия приложения на C# и сервера на PHP?

    Decadal
    @Decadal
    Мне не совсем понятна архитектура, при которой возможен вариант 1 - означает ли это, что PHP и C# оба лежат на сервере? Если имеется в виду, что вы напишете консольные команды которые будут запускаться на клиенте, то однозначно не стоит, выбирайте вариант2. Потому что судя по C#, клиентское приложение вероятнее всего ставится на Windows, а доустанавливать интерпретатор PHP вместе с клиентским приложением это сильно излишне.
    Ну и помимо того, REST API это старый, добрый, проверенный метод общения, а запуск консольных команд с чтением их вывода или с побочными эффектами выглядит как костыль, он имел бы место, если это какая-то системная утилита от стороннего разработчика, которую просто использовать из терминала и сложно использовать как SDK.
    Ответ написан
  • Как правильно сделать отвязывание аккаунта?

    Decadal
    @Decadal
    Есть понятие Primary Email - это контактная информация, куда направляются все запросы (по смене пароля, уведомления и тд). При вашей архитектуре email в users является таким Primary Email, а в networks - список secondary emails. Не самое красивое решение в итоге, но у вас есть следующие варианты:
    1) стянуть связанные соц сети и выбрать какой-нибудь email оттуда
    $networks = $this->networkRepository->findBy(['clientId' => $command->clientId]);
    foreach ($networks as $net) 
    {
    // здесь логика по которой вы решаете какой именно secondary email делать primary. 
    // если решения нет (например нет ни одного акка с email), выбивать ту же ошибку что и при count === 1
    }
    // решение есть, значит получен некий email
    
    //задаете новый primary, желательно перед этим проверить что нет юзера с таким праймари
    $user->setEmail($email);


    2) предложить пользователю самостоятельно выбирать Primary Email в случае если он пытается отвязать аккаунт
    Ответ написан
  • Какие есть варианты дебагинга если на прод. отваливается сайт?

    Decadal
    @Decadal
    Сентри. Ставьте сентри, это как логи, только с удобными обертками.
    https://sentry.io

    spoiler
    koBRALz.png
    Ответ написан
    Комментировать
  • Как использовать анонимные функции в php?

    Decadal
    @Decadal
    "если анонимные функции в yii2 указывают в конфигах, значит их кто-то вызывает"

    Создаете свой Grid - тогда создавайте и обработчик, который будет вызывать ключ tableName, предполагая, что он может быть Callable.

    но мой вам совет - просто оставьте это строкой и делайте tableName => UserRecord::tableName()
    Ответ написан
    4 комментария
  • Где в MVC паттерне выводить заголовки и включать сессии?

    Decadal
    @Decadal
    Работа с сессиями и заголовками происходит в контроллерах или вспомогательных классах, которые контроллер использует.
    Почему - потому что сессии и заголовки это вопрос к тому, как обрабатывать запрос от пользователя, а контроллеры именно этим и занимаются. Чтобы легче понять, почему так, представляйте, что контроллеры работают не только с HTTP запросом, но также могут использоваться для обработки консольных команд, где ваши заголовки и сессии вообще не нужны. Будет много проблем, если вы внедрите работу с сессией в слой моделей, на том уровне, где не сможете легко и просто (и без костылей) понять, была ли это консольная команда или запрос из браузера.

    Важно: не пытайтесь увидеть в каждом классе модель, вьюху или контроллер. MVC рассказывает нам о слоях, а не о конкретных классах.
    MVC описывает основу приложения, но не каждый его элемент.
    Ответ написан
    Комментировать
  • Зачем нужна IDE для PHP?

    Decadal
    @Decadal
    Да кстати я тоже хотел спросить зачем нужны машины если есть велосипеды?
    Ответ написан
    3 комментария
  • Синтаксическая ошибка php что делать?

    Decadal
    @Decadal
    Исправлять?

    Parse error: syntax error, unexpected end of file, expecting ',' or ';' in

    тут написано, чего не хватает для счастья

    C:\Users\user\Desktop\HTML\OSPanel\domains\test.ru\index.php on line 11

    тут написано, где этого не хватает

    Если вы будете каждую ошибку у Тостера спрашивать, не научитесь писать код.
    echo $e ['name']

    вероятно в этой строке в конце не хватает точки с запятой.
    Ответ написан
    Комментировать
  • Могут ли украсть сессию php?

    Decadal
    @Decadal
    Нет, таким образом каким вы описали - нет. Идентификация происходит через cookies, а они в свою очередь привязываются к конкретному домену.
    Прописал в своем скрипте - получил куку на своем сервере - молодец, но там ничего нет.
    Ответ написан
    Комментировать
  • Как сформировать php скрипт на лету?

    Decadal
    @Decadal
    $str = file_get_contents("На моем сервере есть XML файл.xml"); 
    // и погнало 
    if (preg_match_all('~<Category>.+?</Category>~s', $str, $categories)) {
    //...
    Ответ написан
    Комментировать
  • Чистый код в php?

    Decadal
    @Decadal
    Вообще хотелось бы услышать как вы решаете эту проблему?

    Вы пришли в пхп чтобы решать проблему чистого кода? Пхп известен как один из самых клиентоориентированных языков - в том смысле, что когда бизнес говорит "надо очень быстро, делай костыли", на пхп они лепятся легко и непринуждённо.
    Можно взять симфони и налепить из него чудовище. Проблема не столько в фреймворке сколько в программисте который пишет код.
    Ответ написан
    2 комментария
  • Как написать простой тест с вариантами ответа на php?

    Decadal
    @Decadal
    Да, простой. Еще вопросы?

    *upd"
    и написать не сложно. Накидать формочку на html, объявить массив, запихнуть туда вопросы, варианты ответа и пометки, какой вариант правильный.
    Ответ написан
    Комментировать