Любой способ включить один и тот же файл php дважды? - PullRequest
0 голосов
/ 22 января 2020

Любой способ включить умножение PHP файлов, содержащих некоторый код, без получения ошибки:

Fatal error: Cannot redeclare Feed() (previously declared in ...

У меня есть один php файл XML, чтобы получить информацию из Веб-сайт. Затем у меня есть PHP файл номер два с тем же кодом, что и в номере 1, + дополнительные, чтобы сократить этот вывод, чтобы его было легче понять. Таким образом, вы можете увидеть измененный текст большим и четким и получить более подробную информацию меньше ниже.

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

<h1 class="status">Status:<span class="open"><?php include 'open-closed.php'?></span></h1>
<p class="info"><?php include 'status.php' ?></p>

открыто-закрыто. php имеет точно такой же код, что и в состоянии . php но еще немного. Статус. php

  $url = ('https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=604');

      function Feed($url) {
        $feed = simplexml_load_file($url) or die('Can not connect to server');
        $result = array();
        foreach ($feed->channel->item as $content) {
            array_push($result, $content);
        }
        return $result;
    }

    $title = 'Ev 134'; 

    foreach(Feed('https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=604') as $f ) {
        if (strpos($f->title, $title) !== false)
            echo $f->description;
    }

открыто-закрыто. php

$url = ('https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=604');

function Feed($url) {
  $feed = simplexml_load_file($url) or die('Can not connect to server');
  $result = array();
  foreach ($feed->channel->item as $content) {
      array_push($result, $content);
  }
  return $result;
}

$title = 'Ev 134'; 

foreach(Feed('https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=604') as $f ) {
  if (strpos($f->title, $title) !== false)
$green_color    = 'green';
$red_color      = 'red';
$closed_text    = 'closed';               
$exception_text = 'could be closed';     

    if (strpos($f->title, $title) !== false){


        if(strpos($f->description, $closed_text) !== false){


            echo (strpos($f->description, $exception_text) === false) ?
                 '<span style="color:'.$red_color.'">STENGT</span>' :
                 '<span>ÅPEN</span>';

        }else{
            echo '<span>ÅPEN</span>';
        }
      }
    }

1 Ответ

3 голосов
/ 22 января 2020

Вы можете использовать функцию PHP function_exists(), чтобы проверить, уже определена ли функция, и пропустить ее повторное определение, если так.

Но это не самое лучшее Решение здесь, ИМО. Вместо этого переместите Feed в отдельный файл, например feed.php, и используйте require_once, чтобы включить этот файл в оба других файла. Таким образом, когда вы обновляете функцию, ее нужно обновлять только в одном месте. Вы можете вызывать require_once столько раз, сколько хотите, его часть «один раз» означает, что PHP будет фактически включать файл только при первом обнаружении.

...