Ответы пользователя по тегу PHP
  • Как правильно организовать модерацию записей от пользователей?

    feycot
    @feycot
    В этом случае вам поможет внедрение конечного автомата.
    Вместо использования флага и введения новой таблицы вы можете использовать ту же самую таблицу с колонкой "состояния". К пример draft, on_moderation, published, archived и так далее.
    Этот способ поможет в будущем, когда будет несколько состояний. Плюс конечные автоматы помогают описать некий процесс (например у вас - публикацию и модерацию контента).
    Если будет рабоатть все на флагах, то потом придется учитывать множества состояний. Типа is_moderation, is_deleted, is_achived и так далее.

    А что касается, если пользователь редактирует версию уже опубликованной статьи, то здесь зависит от того, как у вас внутри приложения все устроено. Скорее всего нужно вводить таблицу с "версией" статьи, где будет сохраняться контент. Т.е. когда юзер что-то редактирует, создается новая версия, а в articles содержится id это версии article_version_id например.
    Ответ написан
  • Знания Junior php разработчика?

    feycot
    @feycot
    Чтобы проверить/закрепить знания на практике можно участвовать в реальных проектах, опенсорсе, делать тестовые задания. Например тестовые можно взять отсюда https://github.com/Hexlet/ru-test-assignments

    Что касается знаний - есть так называемая "база", или общие фундаментальные знания
    * Операционные системы и сети. Хотя бы общие вещи. Как работать с линуксом, выполнения команд, чтение логов, несложное администрирование. Понимать, что происходит, Когда вводишь google.ru в адресную строку
    * Тестирование. Это в принципе легко делается, тем более в ларавеле. Как тестировать
    * Теория множеств, базы данных. Умение писать простые запросы
    * Гит, мастхев
    * Управление конфигурацией, типа Ansible, мб даже Terraform (хотя бы иметь представление, что это). Знать, что такое деплоить.
    * Собственно уметь писать код, хотя бы по ТЗ, хотя бы круды. Ну и тестировать его
    * Структуры данных, хотя бы в общих чертах (но это идет в алгоритмах)
    Можете провериться еще по чек-лист вот этому https://guides.hexlet.io/ru/check-list-of-engineer...
    Если что-то не знаете - рекомендую изучать.
    Базово верстку, тк она всегда пригодится.
    Ну и этих знаний достаточно, чтобы быть уверенным джуном.
    Ответ написан
    Комментировать
  • Где можно получить повышение квалификации backend разработчику?

    feycot
    @feycot
    Если у вас сервис только-только развивается, то стоит сфокусироваться на тех вещах, которые помогут разрабатывать уже сейчас. Соответственно спросите себя, а знаете ли вы:

    - Автоматизированное тестирование. Написание тестов, чтобы основной функционал был покрыт, тесты помогали в разработке и помогали в случае регресса.
    На эту тему есть неплохая статья и доклад

    - Автоматное программирование. Конечные автоматы облегчают разработку в разы, когда у нас появляется состояние. Даже в простом блоге - пост удален, в черновике, опубликован. По автоматам есть книга "Автоматное программирование Анатолий Абрамович Шалыто"

    - Конфигурация и инфраструктура. CI/CD. Автоматизация. Деплой приложения - это многоэтапный процесс. Миграции, конфигурация, сборка проекта. Тут стоит почитать Приложение 12 факторов 12factor.net В целом, если используется современный фреймворк (например Ларавел), то будет полегче с этим работать. Следует помнить, что окружения должны быть разделены - продакшен, тестовая среда (стейдж), среда разработки. Приложение должно без проблем раскатываться и запускаться, желательно "в один клик".
    С этой темой связаны технологии Docker, K8s, Ansible. По поводу последнего - с ним можно автоматизировать настройку локального окружения, деплой. Также следует поизучать Github Actions, Gitlab CI/CD.
    Если приложение еще небольшое, то его можно с легкостью деплоить на Heroku.
    В целом можно пройтись по этому чек-листу и посмотреть как у вас сейчас и как должно быть.
    По оптимизации, нагрузкам соответственно optimization.guide

    - Операционные системы. Сети. Большая область про которую забывают разработчики. Понимание ОС позволяет лучше понимать как работают веб-сервера, приложения.
    На эту тему есть книги
    Операционная система UNIX (Андрей Робачевский, Сергей Немнюгин, Ольга Стесик)
    Руководство администратора Linux (Эви Немет, Гарт Снайдер, Трент Р. Хейн)

    - Фреймворки. Изучать от и до их не стоит, необходимо понимать как они устроены, чтобы не было магии. Но если используется что-то самописное - это не очень хорошо, особенно когда не хватает квалификации. Стоит присмотреться к большим фреймворкам типа Laravel/Symfony

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

    feycot
    @feycot
    Проверьте, что имя файла совпадает с именем класса.
    По ошибке имя контроллера написано с маленькой буквы.
    Ответ написан
    Комментировать
  • Практика для php новичка?

    feycot
    @feycot
    Если хочется практиковать язык в плане алгоритмов, подходов и так далее, то можно выполнять ежедневные ката.
    Ката - это пришло из боевых искусств, повторяющиеся простые практики. В данном случае это решение задачек разной степени сложности. Задачи должны быть небольшими, чтобы можно было решить хотя бы 1 задачу. Ну и должны увеличиваться по сложности, чтобы можно было видеть рост навыка.
    Где можно прокачаться
    codebattle.hexlet.io - Кодбаттл. Два игрока на скорость решают общую задачу на разных языках, можно на одном. Можно играть против ботов. Есть разные уровни сложности
    https://www.codingame.com/ - CodinGame похоже на то, что выше, только вы не видите решение друг друга
    https://www.codewars.com/ - CodeWars тут уже решение нужно делать самому, т.е. вы соревнуетесь с другими пользователями из рейтинг
    https://leetcode.com/ - множество задачек разного уровня. Похоже на то, что выше.

    Если уже уверенно пишете код, знаете стандартные функции и хочется сделать какую-то задачу по типу тестового, то можно взять задания здесь https://github.com/Hexlet/ru-test-assignments в репозитории есть тестовые задания от разных компаний.

    Степень заработка фрилансера зависит от заказа, стажа (опыта), возможно от портфолио, а также вообще от ситуации на рынке, так как может найтись человек, который будет готов сделать задачу дешевле.

    Все веб-фреймворки плюс-минус одинаковы, поэтому изучив один, можно изучить другие.
    Подробнее про фреймворки можно почитать здесь https://ru.hexlet.io/blog/posts/kakoy-php-freymvor...

    А чтобы понять, готов или нет для работы - надо просто ходить по собеседованиям. У разных компаний разные требования. Где-то берут только опытных, где-то совмем зеленых в плане опыта.
    Ответ написан
    3 комментария
  • Как сделать проверку на спам (Повторяющиеся текст)?

    feycot
    @feycot
    Если у вас уже есть заявки в базе данных, вы можете искать по тексту заявки уже существующие плюс к этому добавить условие, что этих заявок нет за определенный промежуток времени (например неделя). Для этого в базе должна сохраняться дата создания заявки.

    Это самый очевидный вариант.
    Ответ написан
    Комментировать
  • Как дочерние элементы массива смержить к родительским?

    feycot
    @feycot
    Необходимо использовать функцию array_map
    array_map(function ($user) {
            $organization = $user['organization'];
            $region = $organization['region'];
    
            return [
                "name"             => $user['name'],
                "surname"          => $user['surname'],
                "organizationName" => $organization['name'],
                "regionName"       => $region['name'],
                "regionId"         => $region['id'],
            ];
        }, $users)


    Array
    (
        [0] => Array
            (
                [name] => Илья
                [surname] => Блинов
                [organizationName] => фейсбук
                [regionName] => Рязанская область
                [regionId] => 62
            )
    
    )
    Ответ написан
    Комментировать
  • Верстка и вывод из БД циклом php?

    feycot
    @feycot
    При выводе данных из БД обычно используется пагинация для постраничного вывода.
    Чтобы данные не ломали верстку, то либо верстку делают такую, чтобы она не ломалась, Либо ограничивают данные. Например если у нас таблица со статьями, то выводят 200 символов в тексте статьи, остальное можно увидеть при детальном просмотре.
    Ответ написан
    Комментировать
  • Бесплатные курсы по PHP?

    feycot
    @feycot
    https://vectree.ru/main - тут скорее сборник статей-ссылок, но как роадмап может зайти. Есть небольшое коммьюнити, которое может помочь.
    https://github.com/codedokode/pasta - здесь несколько полезных статей и заданий, как раз на прокачку.
    Ответ написан
  • С чего начать изучение PHP?

    feycot
    @feycot
    Начни с азов https://code-basics.ru/languages/php
    Потом почитай про стандарты кодирования, то есть не писать так, словно ты из 2007 года
    getjump.github.io/ru-php-the-right-way
    Потом уже принимайся за конкретное. Изучи стек технологий, с которым работает PHP
    https://ru.hexlet.io/professions/php
    https://stepik.org/course/4006

    Дальше можешь идти по фреймворкам, например посмотреть видео ElisDN

    Из книг советую приобрести PHP7 в подлиннике. Книга толстая, в ней много инфы, не всегда хорошей, но как справочник она отлично подойдет.
    Ответ написан
    Комментировать
  • Почему неправильно записывает в БД радиокнопки?

    feycot
    @feycot
    А что выводит $_POST? В форме есть что-то еще кроме чекбоксов? Сейчас проверил радиобокс и работает корректно.
    Ответ написан
    Комментировать