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

    Правильный вопрос - быстрый ответ.
    Как узнать банк и тип карты по цифрам?
    Как работать с имеющимися решениями по узнаванию на php?
    Как настроить одно из найденных решений с Telegram?
    Ответ написан
    Комментировать
  • Постоянный (потоковый) вывод в браузер PHP?

    Если есть php websockets сервер, то работать через него.
    Ответ написан
    Комментировать
  • Как сравнить массив и строку?

    Находите в строке регулярным выражением все nameX.
    Перебираете все значения данного списка на наличие ключей в массиве значений.
    При наличие ключа выводите значение из массива по ключу.
    Ответ написан
    Комментировать
  • Как мигрировать с php 5.4 на php 7?

    Включаем php 7.x.
    Включаем логирование (судя по вопросу).
    Пока не работает:
    Проверяем где поломалось.
    Определяем количество подобного кода, который сломался.
    Правим.
    Ответ написан
    Комментировать
  • Как правильно отсортировать выборку из базы php mysql?

    Сделать выборку с группировкой для сортировки (количество кого-то по городам).
    Сортировать основную выборку с учетом выборки с группировкой.
    Как это объединить в один запрос не буду сейчас разбираться.
    Как вариант, возможна сортировка и после выборки уже в программном коде.
    Ответ написан
    Комментировать
  • Пожалуйста оцените мое убогое ООП?

    Тут "куча" независимых задач:
    1. Чтение файла (лога) построчно.
    2. Разбор строки по правилам.
    3. Сохранение результата разбора строки в каком-то промежуточном виде.
    4. Сохранение в нужном текстовом формате.
    5. Сохранение текста в файл.
    6. Сборка всех задач в один простой алгоритм.
    Все их лучше решить отдельно.
    Ответ написан
    Комментировать
  • Как правильно обратиться к БД оператором INSERT INTO?

    Прежде чем работать с базой данных научитесь работать с ошибками в php.
    Включите их вывод в режиме разработки.
    Кроме того, добавьте вывод реальных ошибок взаимодействия с базой данных, а не бессмысленный текст.
    Безусловно, на рабочем сервере этого работа с ошибками организуется по другому.
    Но вы пока учитесь, а потому должны иметь максимум информации о происходящем.

    И помните. Книга не причём. Код в ваших руках. Вы с ним работаете.
    Ответ написан
    2 комментария
  • Код в парадигме ООП PHP?

    try {
        $db_connection = new DbConnection();
        $user_repository = new UserDbRepository($db_connection);
        $owner = $user_repository->findById($user_id);
        if (!$owner) {
            throw new UserNotFoundException("Автор с идентификатором \"{$user_id}\" не найден");
        }
        $article_repository = new ArticleDbRepository($db_connection);
        $articles = $article_repository->findByOwnerId($owner->id);
    
    } catch(UserNotFoundException $e) {
        // ...
    } catch(\Exception $e) {
        // ...
    }
    Ответ написан
    Комментировать
  • Хорошая ли практика создавать свои классы Exception для отлавливания разных ошибок?

    Имеет смысл, например, для внутренних эксепшенов в библиотеках.
    Потому что библиотека используется как черный ящик.
    Ответ написан
    Комментировать
  • Где найти примеры больших хороших проектов на PHP?

    Не относитесь к теории как чему-то реализуемому в реальной жизни. Просто начните думать и применять какие-то важные моменты. С одной стороны вам будет мешать работодатель и команда (вы занимаетесь не тем, вы слишком усложняете и т.д.), а с другой недостаточный опыт (а хрен его знает, будет изменятся то или другое место в коде и как). И сколько бы вы опыта не получили или сколь лояльного работодателя не повстречали - ничего не изменится.

    Тоже понятие "сложный проект" - это не всегда про архитектуру. Чаще наследие по коду и не умение организовать производственный процесс.
    Ответ написан
    Комментировать
  • Как использовать ооп на практике?

    Нужно переписать кучу своего и чужого кода, что бы понять как делать правильно.
    Философия бесполезна. Всё начинается с момента, когда наконец понимаешь, как не стоит делать.
    Пока силы есть, можно много кода "лопатой накидывать". Плюс ещё IDE помогают быть беспечным.
    Ответ написан
    Комментировать
  • Куда писать sql запросы при реализации репозиториев (DDD)?

    Очевидно вопрос связан с современными фреймвоками типа Yii или Laravel. В них реализация упрощённая и смешанная. Совсем не DDD.

    Классические модели из DDD ничего не знают о хранении и получении "объектов". Репозитории поставляющие "объекты" для модели и сохраняющие их никакого не имеют отношения к модели. Они из окружения приложения. Описываются через интерфейсы.
    Ответ написан
    Комментировать
  • Как въехать в программирование (ООП, паттерны)?

    Нужно начинать с SOLID. Позволяет понять, как писать изменяемый и расширяемый с минимальными проблемами код. А программирование - это изменение и расширение кода. Паттерны далее легче приложатся.
    Ответ написан
    Комментировать
  • Стоит ли новичку начинать с фреймворка или лучше учиться на чистом php?

    Всё зависит от того, насколько вы готовы думать и развиваться.
    1. Если исходить из закона общности, то любой код "мусор". Значит можно работать и со своим и с чужим кодом.
    2. Если исходить из закона относительности, то один код лучше другого в данной ситуации. Значит проблема связана с пониманием этой относительности и использования её.
    3. Если исходить из закона развития, то нужно преодолевать как ограниченность своего эга, так и авторитеты окружающих. Значит что в любом случаем придётся научиться осознавать глупость как своего кода, так и чужого.

    Но это если всё строится на принципе личного развития через широкий опыт.

    Если исходить из дохода, то это всё не имеет значение. Там принцип: заниматься тем, за что платят.
    Ответ написан
    4 комментария
  • Нужна помощь с архитектурой в MVC?

    Принцип единственной ответственности. Нельзя связывать отображение формы, очистку данных, валидацию и обработку ошибок валидации.
    Формы создаются хелперами в шаблоне и используют объект ошибок, для их отображения.
    Настроенный запрос использует стандартный запрос, чистильщик данных из запроса (на самом деле сомнительно) и валидатор.
    Валидатор использует запрос и объект ошибок.
    Объект ошибок использует сессионный объект.
    Далее есть объекты доступа к хранилищу данных и самих данных.
    И нет никакой универсальной всё выполняющей формы.
    Ответ написан
    Комментировать
  • Как разобраться в большом чужом коде?

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

    Если же есть возможность пообщаться с предыдущим разработчиком, то следует выслушать начальника транспортного цеха его. Хотя бы в общих чертах узнать логику.

    И ещё сразу совет в контексте. Если будет много копипаста и смесь грузина с чемоданом php html js и css, то требуйте до перехода к внесению нового функционала времени на рефакторинг кода. Иначе отказывайтесь.
    Ответ написан
    Комментировать
  • Каким должен быть правильный контроллер?

    На самом деле контроллер связующее звено.
    Он должен быть тонким, но не более чем нужно.

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

    И вот от сложности самой модели и её обёртки зависит тонкость контроллера.
    Чем проще реализация модели, тем толще контроллер.
    Ответ написан
    Комментировать
  • Шаблонизаторы ещё актуальны?

    Есть даже шаблонизаторы на нетив PHP platesphp.com
    И вот такие https://github.com/Level-2/Transphporm интересные
    Ответ написан
    Комментировать