Как обрабатывать устаревшую функцию в PHP - PullRequest
3 голосов
/ 23 июля 2010

Я новичок в этом сайте.Я хочу спросить о программировании на PHP.Как мы можем справиться с устаревшей функцией в PHP.Я хочу перенаправить его на мою новую функцию.Как мы знаем, функция ereg устарела в PHP 5.3.0 и рекомендуется для preg_match (posix to PCRE).Но когда мы написали много кода с функцией ereg, нужно ли его менять вручную?Я хочу решение, подобное этому.

function ereg($pattern, $string, &$array) { return preg_match('#'.$pattern.'#', $string, $array); }

Основная проблема заключается в не функции ereg, а в решении обработки устаревшей функции.Я искал в Google.Кто-то предлагает использовать override_function (используя расширение APD).Но это расширение трудно найти (мне нужна сборка расширения для Windows).Кто-нибудь может мне помочь?Я извиняюсь за мой плохой английский.Я надеюсь, что вы можете понять.

Ответы [ 2 ]

5 голосов
/ 23 июля 2010

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

Если вы не хотите обновлять код, вы можетевсегда просто не обновляйте свою установку PHP.Или вы можете подождать, пока не выйдет релиз PHP, когда ereg() будет полностью удален, и использовать вышеуказанное решение.

Другие возможные решения включают поиск / замену всех вызовов ereg и заменуmy_ereg, которая может быть функцией, которую вы определили выше.

Также:

if(!function_exists("ereg")){ .... }

Определите функцию внутри оператора if, которая проверяет, существует ли функция уже.Это сделает переход более плавным.

Но в целом цель устаревания состоит в том, чтобы дать разработчикам время обновить свой код и прекратить использовать все устаревшие функции, прежде чем они полностью удалят его из базы кода.

Я полагаю, некоторые называют это «Техническим обслуживанием».

0 голосов
/ 23 июля 2010

Вы всегда можете использовать функцию function_exists.

if(!function_exists('ereg'))
{
    function ereg($pattern, $string, &$array) 
    { 
        return preg_match('#'.$pattern.'#', $string, $array); 
    }
}

Использование этого метода позволит ему работать во всех версиях, как будто оно устарело, но все еще может использоваться, оно будет использовать функцию, нокак только он будет удален из php, он сможет использовать вашу пользовательскую функцию.

...