Свежая подборка со ссылками на новости и материалы. В выпуске: фреймворк и статьи по Serverless PHP, доклад Расмуса Лердорфа о PHP в 2018 и другие видео, предложение из PHP Internals, порция полезных инструментов, и многое другое. Приятного чтения!

Новости и релизы



PHP Internals


  • [RFC] Weak References — Черновик предложения о реализации слабых ссылок в ядре PHP. На данный момент такая возможность доступна только через расширения colder/php-weakref или krakjoe/uref.


Инструменты


  • Roave/BetterReflection 3.0 — Рефлексия без загрузки классов.
  • fe3dback/str — Библиотека, в которой реализовано множество функций для манипуляций со строками в ООП стиле и поддержкой многобайтных строк.
  • psecio/secure_dotenv — Секьюрный обработчик .env файлов с шифрованием.
  • php-opencv/php-opencv-examples — Примеры использования php-opencv для детектирования предметов и лиц, использования предобученных сетей. Прислал morozovsk.
  • xobotyi/emittr — Небольшая библиотека реализующая события. Прислал xobotyi.
  • atlasphp/Atlas.Query — Еще один query builder для SQL-запросов.
  • getopt-php/getopt-php — Библиотека для парсинга аргументов командной строки.
  • mindplay-dk/middleman — Простейший диспетчер PSR-7 middleware.
  • spatie/typed — Концепт улучшений типизации в PHP: дженерики, структуры, кортежи, типизированные списки.


Материалы для обучения




Аудио и видеоматериалы




Занимательное



Спасибо за внимание!

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

Прислать ссылку
Поиск ссылок по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 130

Комментарии (9)


  1. OnYourLips
    28.05.2018 10:04

    Сделаю замечание про деплой при помощи Ansistrano.
    Эта статья претендует на руководство, но фактически является введением, и подобный способ деплоя применим лишь для pet projects.

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


    1. merk
      29.05.2018 16:56

      Здравствуйте, спасибо за фидбэк!

      Статья действительно не самая подробная, но поясняет базовые основы, которые у нас одинаковые для проектов подобного рода. Если вам интересны какие-то частные моменты, можем также об этом рассказать.

      По хорошему вам стоит сделать билд приложения на специальной машине один раз,, и дальше уже использовать Ansistrano для деплоя его на разные среды

      Мне не совсем понятно как вы предлагаете заранее собрать php-приложение?

      Не надо использовать подход Capistrano, где приложение собирается прямо на прод-средах.

      Поясните пожалуйста, почему вы так считаете? Мне кажется, это вполне практичный подход


      1. OnYourLips
        29.05.2018 17:27

        Мне не совсем понятно как вы предлагаете заранее собрать php-приложение?
        Установить composer зависимости, прогреть кеш симфони.

        Поясните пожалуйста, почему вы так считаете?
        Не тратятся ресурсы сервера на повторную сборку, собирается один раз и точно одинаково, деплой продакшена происходит в десятки раз быстрее, не нужны зависимости для сборки на продакшен-машине.


        1. merk
          29.05.2018 18:07

          Кажется, я понял — вы предлагаете вместо сервера напрягать сборкой какую-то отдельную билд-машину, идентичную по рабочему окружению с прод-сервером. Интересный подход! Возможно такое действительно применимо, когда нужно деплоить на кучу серверов и загрузка каждого из них критична. Мы в большинстве случаев не сталкиваемся с таким


          1. BoShurik
            29.05.2018 18:26

            Основная проблема — dev-зависимости на проде. В случае, если используется assetic, придется ставить java, для webpacknode.js.


            Мы эту проблему решили в рамках `Capistrano`
                task :webpack_build do
                  run_locally do
                    execute "./node_modules/.bin/encore production"
                  end
                end

            и


              task :upload do
                release_path = fetch(:release_path)
                web_path = fetch(:web_path)
            
                on roles(:web) do
                    execute :mkdir, "-pv", "#{release_path}/#{web_path}/build"
                    upload! "#{web_path}/build", "#{release_path}/#{web_path}", :recursive => true
                end
              end


            1. merk
              29.05.2018 20:29

              Согласен, таким dev-зависимостям на проде не место. Наш фронтенд, если использует node.js и webpack, то попадает на прод совсем другим способом. Деплой фронта — вообще отдельная тема)


          1. OnYourLips
            30.05.2018 11:38

            идентичную по рабочему окружению с прод-сервером

            Зачем? Это не обязательно с Symfony 3.2+ и использованием переменных окружения (А начиная с 4.0 этот метод и вовсе по умолчанию).


  1. NickyX3
    28.05.2018 11:16
    +1

    fe3dback/str — Библиотека, в которой реализовано множество функций для манипуляций со строками в ООП стиле и поддержкой многобайтных строк.


    забавная фигня, спасибо.


  1. POPSuL
    30.05.2018 05:42

    Странные операторы в PHP

    Интересная статья, но у меня почему-то ничего так и не завелось :(