php-diff - 如果 2 个文件相同则显示 "no differences"

php-diff - show "no differences" if 2 files are identical

我正在使用 php-diff,这是一个优秀的基于 Web 的差异工具,当文件不同时输出非常好。

我遇到的问题是,当 2 个文件相同时,根本没有输出。

我使用的代码是根据上面 link 中的示例使用 "side by side" 输出:

$a = explode("\n", file_get_contents(dirname(__FILE__).'/a.txt'))
$b = explode("\n", file_get_contents(dirname(__FILE__).'/b.txt'));
require_once dirname(__FILE__).'/../lib/Diff/Renderer/Html/SideBySide.php';
$options = [];
$diff = new Diff($a, $b, $options);
$renderer = new Diff_Renderer_Html_SideBySide;
echo $diff->Render($renderer);

假设 a.txtb.txt 的内容相同。 如果我 var_dump($diff) 它显示的对象包含两个文件的内容,以及 class Diff.

的属性

问题在于 $diff 中没有任何东西可以用来确定文件是否相同,因为 $diff->Render 似乎只在存在差异时输出任何内容。

有谁知道如何修改它以包含某些内容,甚至是简单的消息,例如 "no differences between these files"。

你可以这样做:

class SideBySideWithMessage extends Diff_Renderer_Html_SideBySide {
      public function render() {
           $html = parent::render(); 
           if (empty($html)) { 
               return "Files are identical"; //Could do some formatting as well
           }
           return $html;
      }
}



$renderer = new SideBySideWithMessage;
echo $diff->Render($renderer);