Сегодня подготовим всю необходимую инфраструктуру. Установим и настроим локальный HTTP-сервер Nginx c PHP-FPM в Docker. А потом определим структуру файлов и директорий проекта для написания наших классов. Сделаем автозагрузку классов для фреймворка и демо-приложения с помощью Composer. Для тестирования установим PHPUnit и напишем свой первый тест. И заодно настроим интеграцию PHP и запуска тестов в PHPUnit.
- 00:01:29 Демонстрационная HTML-страница
- 00:02:05 Настройка табуляции с editorconfig
- 00:06:58 Недостатки ручной установки
- 00:08:03 Использование виртуализации
- 00:10:13 Использование контейнеров
- 00:13:26 Запуск процессов через Docker
- 00:18:11 Создание своего образа с Nginx
- 00:20:51 Работа с Docker Compose
- 00:23:05 Установка PHP-FPM
- 00:26:52 Упрощение запуска в терминале
- 00:28:56 Философия одного процесса
- 00:30:58 Консольный процесс PHP-CLI
- 00:32:45 Переопределение пользователя
- 00:35:30 Установка Composer
- 00:39:38 Инициализация проекта
- 00:40:37 Сортировка зависимостей
- 00:40:55 Интеграция PHP в PhpStorm
- 00:43:37 Структура исходного кода
- 00:44:40 Автозагрузка классов проекта
- 00:47:14 Подключение PHPUnit
- 00:49:19 Донастройка тестов
- 00:51:23 Подключение автозагрузчика
- 00:51:58 Пробный класс и тест
- 00:54:07 Команда запуска тестов
- 00:55:13 Запуск тестов в PhpStorm
- 00:56:48 Общепринятый Code Style
- 00:59:33 Установка PHP CS Fixer
- 01:02:56 Команды запуска
- 01:04:57 Запуск Composer из Docker в PhpStorm
- 01:06:36 Статический анализ кода
- 01:07:46 Использование Psalm
- 01:10:12 Автопроверка в PhpStorm
- 01:12:43 Обзор результата
Скрытый контент (код, слайды, ...) для подписчиков.
Открыть →Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram
Спасибо!
Спасибо!
Крутой урок!
Спасибо большое за урок. Вроде бы знакомая информация, но есть много интересных тонкостей
Дабавьте лайки. Хочется поставить лайк но нет такой возможности :) :)
Доброе утро.
Самый лучший "лайк" это написать словами благодарность Дмитрию.
p.s. Что вы, в самом деле, как неандертальцы!!! Что, без "наскальной" живописи никак не можете выразить свои мысли?
Неандерталец это ты, раз не понял что я своим комментарием выразил слова благодарности в завуалированной форме.
Не лайки а линк доната, куда можно ливануть бабла в багодарность, К тому же надо учитывать, что реализация нового функционала, отнимет время от уроков, которые и так не особо часто выходят, поэтому не стоит отвлекать Диму всякой не нужной хернёй. Спасибо, за урок Дима.
Спасибо большое, ждём следующих эпизодов.
С нетерпением жду продолжения именно этого проекта...
Шикарный урок!
Дмитрий, как всегда урок прекрасен.
Благодарю.
Интересно, о каких асинхронных вещах говорится? Что можно использовать вместо связки nginx + php-fpm?
В простейшем случае можно взять простой асинхронный сервер RoadRunner для запуска нашего обычного синхронного приложения.
В сложном случае можно построить полностью асинхронное приложение на асинхронных пакетах вроде Swoole, ReactPHP и AmPHP.
Спасибо вам, Дмитрий и Юлия! Понятно разобрана настройка докера и запуск контейнеров.
Спасибо!
Не могу победить. Версия композер 2.3.5
На этапе установки зависимости для PHP
Нашел что они тут правили это.
Но так и не понял почему не работает. Если речь про install - то мы же его не устанавливаем чтобы передать параметр
--ignore-platform-reqs
. А просто копируемВообщем не понимаю как победить
Это только в версии 2.3.5 или ещё и в других? Если только в этой, то можно попробовать другую:
Вот не сработала почему-то эта магия с RUN addgroup
Потому что на composer install выдавало ошибку:
Пришлось закомментить
USER app
чтобы композер устанавливал всё необходимое.
А, и почему-то ругалось на версию в docker-compose.yml
2.9 ему не нравилось, а вот 3.0 в самый раз. Вот сам текст ошибки:
Нужно добавить права на запись всем для самой папки
api
.В этом проекте у нас нет такой папки, она в проекте аукциона. Хотя впрочем, здесь это сработало по аналогии. Спасибо!
Добрый день, Дмитрий.
Подскажите, пожалуйста, почему при создании cli interpreter у меня в path mappings добавляется ещё один путь?
Посностью path mappings выглядит так:
Пытаюсь удалить его в Edit Progect Path Mappings, но он не активен.
Откуда подставляется этот путь и как его удалить, если он не нужен?
Версия PhpStorm 2022.3
Недавно в JetBrains добавили Scratch files. Это они теперь монтируются.
А можно ли это как-то отключить?
Под это создаётся image, container и volume. Какой толк от этого?
Может можно. Не интересовался.
Дмитрий, подскажите пожалуйста, у меня нарисовалась проблема с правами у php-cli, не удается создать файл composer.json и не получается соответственно скачать все зависимости, создать папку vendor и composer.lock
Хотя все Dockerfile использую такой же, который вы показываете в данном уроке, плюс свежая установка Ubuntu, никакие права юзера не менял.
Проблема была сугубо в правах пользователя, у меня права были на папку, где лежит проект, были 775, поменял на 777 (для локальной разработки вполне норм, т.к. я один юзер на моем компе) все начало работать корректно.
Ну и плюс рекомендую тем, у кого лезут ошибки при установке, почитать комменты выше) Возможно там есть ответ на вопрос)
Ошибка на строке
и не только на groupadd ругается, но и, например, на apt-get тоже.
Как исправить?
Проблема из-за разных дистрибутивов Linux.
Команды
groupadd
иapt-get
используются в Debian и Ubuntu, а мы используемaddgroup
иapk
для Alpine.Дмитрий, добрый день! Расскажите пожалуйста подробнее, какой профит мы получаем от контейнера php-cli? Или тут сугубо философия? Просто не понимаю, зачем добавлять отдельный контейнер, если мы можем обойтись без него, ведь php-cli у нас уже есть в контейнере php-fpm.
При таком разделении мы можем :
wait-for-it.sh
, которые не нужны в php-fpmДобрый день!
Не получается установить psalm. На команде
говорит
Дмитрий, добрый день!
С учетом того, что PhpStorm ушел из России, могли бы вы записать скринкаст с аналогичными настройками для VSCode?
Или войти через: