PHP 7.2 каждый устарел. Преобразуйте для каждого из них в foreach

Из http://us3.php.net/manual/en/function.parse-url.php#93983

по какой-то нечетной причине parse_url возвращает хост (пример example.com) в качестве пути, когда схема не указана во входном URL-адресе. Поэтому я написал быструю функцию для получения реального хоста:

blockquote>
function getHost($Address) { 
   $parseUrl = parse_url(trim($Address)); 
   return trim($parseUrl['host'] ? $parseUrl['host'] : array_shift(explode('/', $parseUrl['path'], 2))); 
} 

getHost("example.com"); // Gives example.com 
getHost("http://example.com"); // Gives example.com 
getHost("www.example.com"); // Gives www.example.com 
getHost("http://example.com/xyz"); // Gives example.com 

1
задан CM 웃 13 July 2018 в 08:11
поделиться

2 ответа

Вам не нужны ключи массива:

foreach ($session->vars as $key=>$sesion_var) {
if ($sesion_var == trim($var)) {
    return true;
  }
}

или более согласованы с остальной частью вашего кода:

foreach ($session->vars as $i=>$sesion_var) {
 if ($session->vars[$i] == trim($var)) {
    return true;
 }
}

или, может быть, вы должны использовать array_search ( ) вместо этого кодового блока:

if(array_search(trim($var), $session->vars)) return true;
2
ответ дан niklaz 17 August 2018 в 13:24
поделиться
  • 1
    Благодарю. Правильно ли второй блок кода? Я вижу $session_var в первой строке, но не на второй строке, где сказано $session->vars, в отличие от первого кода над ним. – CM 웃 13 July 2018 в 08:23
  • 2
    @CreativeMind, это правильно, но это не эффективно, как первое или третье решение. Я только что разместил его в качестве примера, если вы хотите поменять только одну строку кода. Но я бы предложил реорганизовать и оптимизировать ваш код. Это не займет у вас слишком много времени, но это помогает повысить производительность выполнения кода – niklaz 13 July 2018 в 08:26
  • 3
    Это приложение имеет тысячи файлов кода для рефакторинга и оптимизации, поэтому наверняка много времени :) Спасибо за ваши ответы и предложения. – CM 웃 13 July 2018 в 08:29
function session_unregister(string $var): void
{
    global $session;

    $var = trim($var);

    if (isset($session->vars[$var])) {
        unset($session->vars[$var]);
    }
}

function session_is_registered(string $var): bool
{
    global $session;

    return isset($session->vars[trim($var)]);
}

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

1
ответ дан Matei Mihai 17 August 2018 в 13:24
поделиться
  • 1
    Благодарю. Я не думаю, что они хотят заплатить за полное переписывание приложений, просто необходимые минимальные адаптации, но мы обсудим. – CM 웃 13 July 2018 в 08:26
Другие вопросы по тегам:

Похожие вопросы: