Ответы пользователя по тегу PHP
  • Как отправит Json через php на Api ПриватБанка ( Оплата частями )?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    https://github.com/guzzle/guzzle

    И смотрите что приходит нормально. А до этого попробуйте postman'ом такой же запрос отправить.
    Ответ написан
    Комментировать
  • Почему контроллер не видит событие в Laravel?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
     Если событие находится по пути app/Events/UsersPush.php, и там внутри правильный неймспейс, попробуйте `composer dumpautoload`.
    Ответ написан
    Комментировать
  • Laravel - как типизировать Illuminate\Support\Collection?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Дженериков в пыхе нету (и пока что даже rfc не рассматривается), поэтому нормально - никак.

    Более того, вы даже отнаследоватся и поставить там strict-type аргументы не сможете, в виду инвариативности типов аргументов и возвращаемых значений.

    Лучшее решение - забить и ничего не делать. В ПХП оно того не стоит.
    Ответ написан
    Комментировать
  • Почему "Class 'App\Http\Controllers\Blog\BaseController' not found"?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    composer dumpautoload
    ?
    Ответ написан
    Комментировать
  • Как грамотно обработать ajax request?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Ну как отправил, так и получил. Причем тут laravel? Выкидывайте нахрен это: serializeArray

    Вообще не используйте jquery ни для чего, кроме манипуляции dom'а. В т.ч. и для ajax запросов. Возьмите axios, а данные вытягивайте вручную:

    axios
        .post('your/url', {
            parser_id: $('#parser_id').val(),
            is_active: $('#is_active').val(),
            publish: $('#publish').val(),
        })
        .then(data => {
            $('#exampleModal').modal('hide');
        })
        .catch(data => {
            console.log('Ошибки:', data);
        });
    Ответ написан
  • Laravel 5.8: .ERROR: Class 'Pusher\Pusher' not found. Как исправить?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    BROADCAST_DRIVER=redis

    И где тут пушер? И проверьте, есть ли ваш установленный пакет реально в vendor, после чего composer dumpautoload
    Ответ написан
    8 комментариев
  • Фреймворк для команды с нулевым опытом в ООП?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Laravel. Открываете документацию (каждый), читаете от самого начала и до самого конца. Покупаете аккаунт на laracasts.com, заставляете всех смотреть все рекомендованные курсы от начала и до конца. За две-три недельки появится базовое понимание что да как тут работает, сможете писать хоть что-то. Рефакторить прийдется много, но если реально прочтете документацию и реально посмотрите ларакастс - на большинство проблем в начале у вас уже будут простые и логичные ответы.
    Ответ написан
    Комментировать
  • Как можно упростить разработку и поддержку двух похожих между собой сайтов на Laravel?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Если прям совсем идентичны - обойдетесь конфигами.

    Если есть изменения в бизнес логике - берет один из них как основной, форкаете репозиторий и пишите любые изменения там для второго.

    При нужде - обновляете первый репозиторий и мерджите изменения во второй.
    Ответ написан
  • Fastcgi_finish_request Laravel, php?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    \fastcgi_finish_request()
    Ответ написан
    Комментировать
  • Бесконечные запросы CURL Laravel?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Ответ написан
    Комментировать
  • Почему не мутирует экземпляр Carbon?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    В смысле не мутирует? Мутирует, но вы же в массив записываете ссылку на один и тот-же обьект. У вас массив из 20 ссылок на один и тот же обьект $from. Вам нужен clone, типа

    while($from->lessThanOrEqual($to)) {
        array_push($dates, clone $from->addMonths(1));
    }


    ну или ->copy() если так больше нравится.
    Ответ написан
    4 комментария
  • Почему не передаются сессии на websocket сервер?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Таааааааааааааак, хорошооооооооо, а к чему вы думаете закрепляются сессии? Напомню, что когда приходит http запрос на веб-сервер, он создает новый процесс пыха и подсовывает ему нужные данные. Ваш websocket сервер же - один единственный процесс, который никогда не подыхает, и никто ему ничего не подсовывает. Вопрос: откуда ему знать, что за данные вы хотите от него получить?

    Вам прийдется написать отдельную систему авторизации для сокет-сервера, и.е. на фронте передавать какой-то параметр во время/после подключения сокет-серверу, содержащий информацию, с помощью которой можно секьюрно идентифицировать пользователя (кука, jwt, какой-то api ключ), после чего сокет-сервер должен как-то проверить эту информацию и куда-то сохранить инфу (в памяти), что "такое-то соедение пришло от юзера такого то".
    Ответ написан
  • Распознавание изображений в PHP - как сделать наложение декораций на элементы лица?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Заходите на packagist и ищите либы для распознавания частей тела, потом либы для редактирования фоток ну и делаете png'шки с прозрачным фоном...
    Ответ написан
    Комментировать
  • Куда в пространствах имён определять трейты, интерфейсы и абстр. классы?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Нет, не нужно ничего выделять, это идиотизм. Делить нужно по какой-то логике (logging, например), и внутри можно добавлять "под-категории", если нужно. Если меньше чем 20 файлов то и в этом смысла нет.

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

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    На TS есть фреймворк, называется Nest. Он изначально использует модульную структуру, и там она реализована достаточно хорошо. Гляньте.

    Далее как я делаю в Laravel проекте:
    - /vendor - зависимости компоузера, в виде сторонних библиотек и компонентов symfony/laravel. Там есть весь базовый функционал, как, например, работа с БД. Такие зависимости в любом случае будут тесно связанны с логикой приложения, и думать об их удалении не стоит вообще. Максимум, что вы можете - построить слой абстракции над /vendor, но это ПЛОХАЯ идея.
    - /app/Ship - увидел это в другом фреймворке, называется Apiato. Сам по себе он хрень, но сама идея мне понравилась. Этот "корабль" - слой твиков, временных фиксов, загрузчиков и другого, что касается каких-то базовых, недостающий частей фреймворка/библиотек, и используется всемя модулями в проекте. Например:
    • загрузка модулей. Так как для laravel нету нормальной системы, пришлось написать свой костыльчик. Лежит он в ship.
    • обработчик исключений
    • ядра (хттп и консольное)
    • твики для миграций
    • общие трейты, скоупы
    • миксины
    • общие миддлвейры


    В общем все то, что относится ко всему проекту в целому. Структура - хаотична.

    Таким образом в третьем, финальном слое, у меня только чистая бизнес логика:
    - /app/Containers - контейнеры - пафосное слово на замену модулям. Идея та же. В каждом контейнере, в корне, лежит класс с названием контейнера, в котором находятся такие штуки как: краткое название для авто-префикса ресурсов, список провайдеров и миграций (назовем их "штуками из фреймворка", к структуре не относятся).
    Структура каждого контейнера:
    • API/ - все, что касается хттп апи приложения
      - Controllers/ - контроллеры хттп
      - Requests/ - классы form request хттп
      - Tests/ - функциональные тесты этого апи
      - routes.php - файл раутов
    • Broadcasting/ - все, что относится к броадкастингу через сокеты
      - Events/ - сами классы эвентов
      - channels.php - файл регистрации каналов броадкастинга
    • Configs/ - конфиги этого конкретного контейнера (и НЕ его зависимостей)
    • Extra/ - иногда бывает что-то, немного выходящее за рамки контейнера, но еще не входит в Ship. Идет сюда.
    • Middlewares/ - хттп миддлвейры
    • Database/ - все, что связано с базой данных
      - Factories/ - файлы пхп, регистрирующие фабрики моделей ларавель
      - Migrations/ - классы миграций
      - Seeders/ - сидеры базы
      - Setup/ - классы-фабрики, обложка над Factories
    • Enums/ - энамы
    • Exceptions/ - исключения
    • JsonResources/ - гсон ресурсы
    • Models/ - eloquent модели
    • Providers/ - провадйеры
    • Services/ - маленькие классы-сервисы, содержащие всю бизнес логику, не привязанные к ХТТП. Каждый сервис выполняет либо одну задачу, либо несколько мелких задач одного типа. Singleton
    • Traits/ - трейты


    Все, что я выше указал - либо часть самого языка (как трейты), либо часть фреймворка Laravel. Гуглите.

    Есстественно, под разные фреймворки внутренняя структура каждого контейнера может и будет менятся.

    PS: БД одна для всего проекта. Зачем вам разные БД, когда есть разные таблицы?)
    PS2: то, что вы себе представили - называется микросервис. Выполняет какой-то небольшой набор задач, имеет отдельную базу и вообще изолирован от всего остального. Но раз вы задаете такие вопросы, вам они точно не нужны.
    Ответ написан
    5 комментариев
  • Проблема с циклом foreach?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Как я понял, вы хотите, что бы "части кода" запускались асинхронно, верно? Так вот не выйдет. В других языках - да (js к примеру). С какими-то хаками - тоже да. Очереди - да, но все это займет больше времени чем выполнение вашего кода разом, это не имеет вообще никакого смысла в этом контексте, да и вам попросту рано туда.

    Не морочьте себе голову. Хотите оптимизировать - делайте на SQL, трех запросов в общем тут должно быть более чем достаточно.
    Ответ написан
    3 комментария
  • Как запустить сервер и сервер ли это?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Попробуйте добавить параметр к serve:
    --host 192.168.1.10
    Ответ написан
    1 комментарий
  • Можно ли заменить в HTML и CSS названий классов и ID на crc32?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Для "сложных конструкций" без парсинга HTML - никак. Самый простой путь - preg_replace_callback на все CSS селекторы (включая .div .child, .div > .child, .div.child и тд), в колбеке - проходимся по HTML так, как это бы сделал css engine, меняем все что нужно и возвращаем такую же измененную строку.

    В любом случае это извращение, имхо) Либо вариант проще - менять лишь названия без парсинга, при этом учитывая, что в .div .child, .div > child, .div.child будут заменены лишь названия, и для каждого типа div всегда будет равен одному хэшу.
    Ответ написан
    Комментировать
  • Почему не стоит мешать html c php?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Не нельзя, а не нужно. should not.

    Если коротко: это НЕ удобно, это НЕ юзабельно, это противоречит ВСЕМ основным принципам программирования, это НИКТО не будет поддерживать, это быдлокод.

    Ты попробуй написать относительно сложный проект на plain php в перемешку с html (25k+ строк) и тогда посмотри, как же прекрасно все выглядит, работает и как быстро ты это писал)
    Ответ написан
    Комментировать
  • Почему метод post отправляет пустой arra() на phpstorm?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    php_info($_POST)?

    Если вы не можете элементарно кликнуть по методу в IDE/открыть декларацию в интернете/пройти базовый курс по php за 15 долбанных минут, то вам явно НЕ стоит этим заниматся.

    Даже боюсь представить, во что вырастают такие программисты..
    Ответ написан