PHP-Дайджест № 131 (13 – 27 мая 2018)


    Свежая подборка со ссылками на новости и материалы. В выпуске: фреймворк и статьи по 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

    • +46
    • 15,4k
    • 9

    Zfort Group

    323,25

    Компания

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

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

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

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

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

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

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

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

              Основная проблема — 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
                0
                Согласен, таким dev-зависимостям на проде не место. Наш фронтенд, если использует node.js и webpack, то попадает на прод совсем другим способом. Деплой фронта — вообще отдельная тема)
                0
                идентичную по рабочему окружению с прод-сервером

                Зачем? Это не обязательно с Symfony 3.2+ и использованием переменных окружения (А начиная с 4.0 этот метод и вовсе по умолчанию).
          +1
          fe3dback/str — Библиотека, в которой реализовано множество функций для манипуляций со строками в ООП стиле и поддержкой многобайтных строк.


          забавная фигня, спасибо.
            0
            Странные операторы в PHP

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

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

            Самое читаемое