Маркетплейс. Ограничения на версию php

Рейтинг: 3.6090  
Новая
Предложил Минеев Алексей 18.11.2016 13:54:37

Маркетплейс. Ограничения на версию php

Предлагаю добавить возможность писать модули только с определёнными версиями php. Например, модуль может работать только в php >5.5.

Надоело просто писать array() вместо [] и хочется использовать новые возможности языка. Я думаю, все адекватные люди следят за актуальность версий php на своих серверах и кастомизируют сайты использяю последние возможности php.

Рейтинг: 0  
Кирсанов Анатолий 18.11.2016 23:31:36
Насчет "адекватности" вопрос открытый. Но приходилось иметь дело с решениями на маркете, которые молча не включали часть функций не видя определенной версии PHP. Т.е. решение в целом работает, но работает что-то из многочисленных и относительно независимых функций.

Так что маловато предложено в идее. Нужно учитывать и функции модуля и какая версия для какой нужна. Это и развивать решения позволит. Написан к примеру модуль пять лет назад, добавляется новая функция, будет активна, если использовать определенную версию PHP.
Рейтинг: 0.2656  
Семёнов Роман 19.11.2016 08:55:19
посмотрите как реализовано у меня

https://github.com/rivetweb/bitrix-rodzeta.redirect/blob/master/install/index.php

function DoInstall() {
      // check module requirements
      global $APPLICATION;
      if (version_compare(PHP_VERSION, "7", "<")) {
         $APPLICATION->ThrowException(Loc::getMessage("RODZETA_REQUIREMENTS_PHP_VERSION"));
         return false;
      }
      if (!defined("BX_UTF")) {
         $APPLICATION->ThrowException(Loc::getMessage("RODZETA_REQUIREMENTS_BITRIX_UTF8"));
         return false;
      }
просто добавляете в DoInstall необходимые проверки
единственный файл который должен быть совместим php 5.3 это install.php и version.php

и треш-сайты на легаси версиях php отсеиваются без проблем на этапе установки модуля
Рейтинг: 0  
Семёнов Роман 19.11.2016 08:58:42
но я плюсану за то чтобы обновить требование к PHP хотя бы до php 5.4 в ядре (или последней поддерживаемой версии php - на данный момент это php 5.6)

php 5.3 уже давно не поддерживается самими разработчиками PHP

а пока можно использовать вышеприведенный способ
Рейтинг: 0  
BX Solutions 20.11.2016 21:55:07
насколько помню модули должны быть полностью совместимы с битрикс (считай php 5.3) и самовольно делать их не совместимыми с разными версиями является нарушением правил. отсюда и возникла идея.

"Указывать на странице модуля ограничения на версию php" в разделе Технические данные

а за идею с проверкой в инсталяторе спасибо)
Рейтинг: 0  
Семёнов Роман 30.12.2016 14:06:46
имено файлы инсталятора - нужно делать совместимыми с php 5.3 - это всего 1 файл модуля и 1 файл версии модуля.
а остальные файлы модуля делать версии какой вам надо. и делать проверку на версию во время установки.
если модуль не прошел проверку требуемых условий - он не установится -  тогда какие могут быть претензии?

бесплатные - вроде не удаляют.  
хочу попробовать провернуть для платных модулей такой трюк.

но согласен что повышение версии PHP необходимо - фреймворк laravel в новой версии будет - минимально PHP7
wordpress - уже сейчас рекомендуется php7.
Рейтинг: 0.5415  
Семёнов Роман 17.01.2017 20:08:02
http://php.net/supported-versions.php

вот и  5.6
прекратил Active Support и перешел в фазу Security Support до 2018.

когда же битрикс зашевелится.