пятница, 6 июня 2008 г.

Функции PHP-5 в PHP-4?

И снова о старых версиях PHP. Есть у нас один сервер старый, вот на нем и крутится PHP-4, и перейти на 5-й просто так нельзя, потому что куча там всего, и переписывать это нет никаких сил конечно же. Так вот, когда я там чего-то пишу, то постоянно ловлю себя на том, что хочу использовать функции из PHP-5, а нельзя. На самом деле можно, только надо их предварительно написать. Например:
[sourcecode language='php']
if (!function_exists('http_build_query'))
{
function http_build_query($params, $prefix='' , $arg_separator='&')
{
// тут пишем собственно функцию - замену http_build_query() из PHP-5
}
}
[/sourcecode]
Включаем эту функцию в инклуды и все. Этот код будет работать и в php-4 и в php-5. Это способ иногда позволяет под php-4 запустить код, написанный на php-5.

Под катом моя рекурсивная реализация http_build_query(), которая обрабатывает массивы любой степени вложенности.


[sourcecode language='php']
function http_build_query_array(&$query, $parent, $params, $prefix='' , $arg_separator='&')
{
foreach ($params as $k => $v)
{
if (is_array($v))
{
http_build_query_array($query, $parent.'['.$k.']', $v, $prefix, $arg_separator);
}
else
$query .= $parent.'['.$k.']='.urlencode($v).$arg_separator;
}

}
function http_build_query($params, $prefix='' , $arg_separator='&')
{
$query = '';
if (is_array($params))
{
foreach ($params as $key => $value)
{
if (is_array($value))
{
http_build_query_array($query, $key, $value, $prefix, $arg_separator);
}
else
$query .= $key.'='.urlencode($value).$arg_separator;
}
$query = substr($query, 0, strlen($query) - 1);
}
return $query;
}
[/sourcecode]

Комментариев нет:

Отправить комментарий