【问题标题】:Any way to include the same php file twice?有什么办法可以两次包含相同的php文件?
【发布时间】:2020-05-08 23:10:32
【问题描述】:

任何方法都可以包含乘以包含一些相同代码的 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>

open-closed.php 具有与 status.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;
    }

open-closed.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>';
        }
      }
    }

【问题讨论】:

  • 这两个文件都声明了Feed 函数?而且他们的声明是一样的吗?
  • 我已更新问题以显示两个 PHP 文件的内容。
  • 为什么要在顶部声明$url 变量,然后从不使用它,而是将相同的字符串常量传递给函数?如果 URL 从不改变,它可能不需要作为函数的参数;如果确实如此,则在您调用函数时传递$url 变量或消除该未使用的变量。
  • 如果您包含具有相同代码的文件...这意味着 feed 函数被编写了两次...所以您收到错误...函数名称始终是唯一的...您无法重新声明该函数...如果您想同时使用这两个函数...将任何函数重命名为其他名称..

标签: php html include


【解决方案1】:

您可以使用 PHP 的 function_exists() 函数来检查一个函数是否已经定义,如果是则跳过重新定义它。

但这不是最好的解决方案,IMO。相反,将Feed 移动到单独的文件中,例如feed.php,并使用require_once 将该文件包含在其他两个文件中。这样,当您更新函数时,只需要在一个地方进行更新。您可以根据需要多次调用require_once,其中的“一次”部分意味着 PHP 只会在第一次遇到这种情况时才真正包含该文件。

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 2017-10-01
    • 2022-01-07
    • 2010-11-05
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多