Установка Slim и Symfony Console

Подготовка структуры директорий API. Добавление образа PHP-CLI. Установка Slim Framework. Ускорение установки в Composer.

Скрытый контент
Комментарии (27)
Александр
2020-01-02 18:29

Небольшой оффтоп. Можете показать, как реализован видео сервис?

Ответить
Deworker Pro
2020-01-04 14:34

В каком смысле?

Ответить
Deworker Pro
2020-01-17 15:32

Пока просто стандартный показ <video><src="video.mp4"></video> с файлового хостинга.

Ответить
Александр
2020-01-17 17:43

Спасибо

Ответить
Александр
2020-01-04 15:15

Как правильно загружать и показывать видео с сервера

Ответить
Deworker Pro
2020-01-09 07:10

Это не для требования, а для эмуляции. Чтобы он не видел реально установленную в системе версию.

Ответить
Sergei
2020-01-09 16:37

56:25 А зачем использовать рефлексию, когда мы можем также явно указать класс для контейнера? рефлексия же медленная, или экономия на спичках?

Ответить
Deworker Pro
2020-01-10 08:55

Экономия на спичках.

Ответить
Роман
2020-01-10 11:08

php -- --install-dir что значат первые два тире?

Ответить
Deworker Pro
2020-01-10 16:03

Это значит, что параметры для php закончились и остальное надо игнорировать, так как далее пойдут параметры уже для самого скрипта.

Ответить
Oaks
2020-01-10 21:57

Что значит объявление функции static вне класса ?

Ответить
Deworker Pro
2020-01-12 06:03

То, что функция или переменная после него создаётся всего один раз.

Ответить
Сарибжанов Ильдар
2020-01-19 04:10

Чутка погундеть пришёл: «Чтобы не морочиться с конфигурационными файлами, типа conf или .env удобнее использовать окружение докера»

спустя 2 минуты: «Чтобы эти параметры не прописывать по всему коду удобнее создать конфигурационный файл» 0_о

Я слегка запутался, так конфигурационные файлы - это плохо или хорошо?

Ответить
Deworker Pro
2020-01-19 06:07

Имеется в виду не морочиться с копированием и ручным заполнением параметров в локальных файлах вроде config-local.php или .env-local из .gitignore, как это делается в Yii и Laravel.

Вместо этого делаем фиксированный config.php с прямым чтением getenv(...) из окружения.

Ответить
Сарибжанов Ильдар
2020-01-19 11:25

Универсальность порождает избыточность. Фреймворки дают готовые файлы, чтобы можно было быстро стартануть. Конечно, в нашем случае нет смысла делать какие-то conf-local, хотя в большой команде, если всё окружение будет разворачиваться локально, то, возможно и будет смысл иметь какие-то индивидуальные настройки из .local файла.

Например, если в проде у нас кэш в редиса, а очереди в реббита, в деве/стейже очереди синхронные, а локально было бы проще кэш отключить совсем.

В общем, какие-то конфиг файлы могут быть «тонко настраиваемыми» и тогда придётся их заполнять.

Ответить
Deworker Pro
2020-01-19 11:50

Например, если в проде у нас очереди в реббите, в деве/стейже очереди синхронные.

Как раз такое разделение весьма опасно тем, что на деве и стейже всё синхронно работает, а на проде что-то будет асинхронно падать. Или если в проде есть репликация БД и конфигурация с двумя базами, а на деве её нет и конфигурация с одной. Или если в проде почта отправляется по SMTP, а на локалке эмулируется сохранением в файлы.

Докер как раз позволяет без усилий делать везде одинаково, чтобы таких проблем от различия окружений не было.

Единственное, что в config/dev/cache.php и для тестов будет отключен кэш через enable=false.

В итоге необходимость в личном файле config-local для каждого программиста полностью отпадает.

Ответить
Ruslan
2020-01-19 18:54

я не понял момент с php-di (с 39 минуты) . Мы сначала добавили use DI\Container; в индекс, и он на в композер подставил зависимость, или до это в композел руками вписали cтроку "php-di/php-di": "^6.0", ? Или просто из-за монтажа так получилось? а до этого было docker-compose run --rm api-php-cli composer require php-di/php-di.

Если руками редактировать composer.json , то потребуется composer update. Проясните пожалуйста.

Ответить
Deworker Pro
2020-01-19 22:05

В новом проекте не правьте вручную, а всегда делайте composer require. Тогда оно само с нужными версиями пропишется.

Просто у меня уже готовый код из коммитов, где всё уже заранее прописалось.

Ответить
Ruslan
2020-01-19 22:09

Спасибо. Я понял. Думал может какая фишка есть, которая это вставляет, а я не знаю.

Ответить
Ruslan
2020-01-19 23:06

43min. У вас подсвечивается папка src и при создании класса подставляется namespace и declare(strict_types=1)

Как этого добиться?

По этому мануалу мне удалось добиться подстановки namespace

Папка не подсвечивается. :)

Ответить
Ruslan
2020-01-19 23:10

Нашел. Тупо нажать правой кнопкой и выбрать Mark as Source. Но с declare(strict_types=1) Как быть?

Ответить
Deworker Pro
2020-01-20 07:21

Чтобы вручную не помечать папки через Mark as Source и не размечать vendor, нужно зайти в PHP > Composer и включить там опцию Mark packages as libraries. Это заодно правильно настроит игнор и импорт из папки vendor.

А для declare перейдите в Editor > File and Code Templates и там впишите declare в PHP File Header.

Ответить
Ruslan
2020-01-19 23:42

Еще один тупой вопрос:

Когда мы делаем $app->get('/', Http\Action\HomeAction::class)

HomeAction::class - эта конструкция возвращает полное имя класса HomeAction, т.е. строку.

а нам нужно вызвать объект как функцию т.е. $action($request, $response, $args)

Почему без скобок происходит вызов?

Ответить
Deworker Pro
2020-01-20 07:27

Этим мы просто маршрутизатору передаём строкой имя класса. А сам фреймворк уже потом создаёт объект и производит вызов с $request и $response.

Ответить
Shaitan
2020-02-27 19:05

Вот у меня тут вопросик есть) Как правильно поступать с правами? Докер не под юзеровским айдишником делает папку вендор. Из за чего проблемы с правами. Знаю что в докерфайле можно присвоить uid и gid, корректен ли такой способ? Или данную манипуляцию в мэйкфайле можно? Какая практика вообще общепринятая?

Ответить
Deworker Pro
2020-02-28 22:17

С vendor всегда работаем изнутри контейнера, запуская composer require и composer update. Поэтому права здесь нам не мешают.

Но если что-то генерируем в коде и надо поменять права снаружи, то меняем владельца на себя:

sudo chown $USER:$USER api -R
Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий