Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Для профи > Требования к минимальной версии


Автор: Suicidder 9.2.2006, 17:35
есть такая тема - функции, которые используются в скрипте/скриптах - имеют необходимую минимальную версию. Так вот - есть такая задача: как выцепить минимальную версию всех (действительно входящих в ядро и необходимые библиотеки) функций, используемых в скрипте/наборе скриптов.

Автор: Mal Hack 9.2.2006, 18:38
А можно задачу по русски объяснить?

Автор: WhiteSpirit 9.2.2006, 18:49
наверное phpinfo() там и смотри версии библиотек

Автор: Kefir 9.2.2006, 23:34
Suicidder, ответ невероятно прост - НИКАК. Может и есть где-нибудь некие парсеры, которые делают что-то подобное (не видел ни разу), но в общем случае сделать это порой даже смотря на код очень сложно. Причина заключается в том, что в более поздних версиях некоторые функции просто напросто изменяются (появляются новые аргументы, возвращаемые значения и т.д.) и всё это отследить программнм путём просто невозможно (представь себе парсер который должен анализировать не только названия, но и контекст использования ф-ций).
В общем и целом можно сказать, что сейчас на большинсте хостингов стоит 4.3.х и я в основном пытаюсь держаться в рамках этой версии. Если у тебя в планах есть написание доков, то надо иметь это в виду при написании кода.
К пятой версии (и её ф-циям) отношусь очень осторожно, так как знаю, что могу проколотся.

Автор: Suicidder 14.2.2006, 15:32
Цитата(Mal Hack @ 9.2.2006, 18:38)
А можно задачу по русски объяснить?

По-русски:

Чтобы знать, из какой минимальной версии PHP выбирать хостинг, нужно знать абсолютную минимальную версию PHP-проекта (требования). Вот как бы это выяснить автоматически?

У Зенд'а почему-то этого анализатора нет...

Автор: Mal Hack 14.2.2006, 21:03
Ты можешь узнать какие библиотеки установлены на серере, через phpinfo.
Касательно функций, то их уменьшенных копий не бывает.

Автор: Suicidder 14.2.2006, 21:41
Цитата(Mal Hack @ 14.2.2006, 21:03)
Ты можешь узнать какие библиотеки установлены на серере, через phpinfo.
Касательно функций, то их уменьшенных копий не бывает.

я не про то. я про другое smile
нужно узнать, какие минимальные требования нужны, чтобы такой-то там движок заработал, а не конкретные условия конкретного хостинга (может там PHP 4.4.2, а мне достаточно 4.1.2). ну чё непонятного-то, Мал Хацк?

Автор: Kefir 14.2.2006, 23:45
Suicidder, я пожалуй повторюсь:
Цитата
ответ невероятно прост - НИКАК

Я тебя могу заверить - это правильный ответ на твой вопрос.

Автор: Mal Hack 15.2.2006, 00:16
Цитата(Suicidder @ 14.2.2006, 21:41 Найти цитируемый пост)
нужно узнать, какие минимальные требования нужны, чтобы такой-то там движок заработал, а не конкретные условия конкретного хостинга (может там PHP 4.4.2, а мне достаточно 4.1.2).

Объясняю. Это называется "Минимальные требования для работы системы".
Если нужно узнать именно на версии, то надо на ней пробовать и тестировать.
При этом, важно помнить, что часто для работы скрипты необходимы сторонние библиотеки php.
Поэтому минимальными требованием будет определенная версия PHP и наличие определенных библиотек.
Это все устанавливается методом теста. Библиотеки - через phpinfo();

Автор: Suicidder 15.2.2006, 04:40
да про phpinfo() я сто лет как знаю... что ж, спасибо, господа собеседники, тему считаю закрытой

Автор: Alone 2.3.2006, 10:57
Похоже Вам нужно нечто такое:

if (!function_exists('pg_connect')) {
...
}

Но вот как собрать статистику используемых функций языка...

Автор: BIG BROTHER 2.3.2006, 20:29
Цитата(Alone @ 2.3.2006, 10:57 Найти цитируемый пост)
Похоже Вам нужно нечто такое:

if (!function_exists('pg_connect')) {
...
}

Но вот как собрать статистику используемых функций языка...

Не пойдет - ведь с версиями функции не только удаляться могут, но и меняться список аргументов функции

Автор: Alone 3.3.2006, 11:25
еще есть вариант - иметь свою систему тестов для проекта.
Это более надежное решение (не идеальное но все же...)
к примеру

Код

if(function_exists('mktime')){

    $result['mktime']['exist'] = true;

    if(mktime(3,3,3,3,3,3) == 1046653383){

        $result['mktime']['work'] = true;
    }else{

        $result['mktime']['work'] = false;
}else{

        $result['mktime'][exist] = false;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)