我PHP-FineDiff
在我的项目中使用该类作为服务。创建差异工作正常,但是,当我尝试使用 eg 恢复差异FineDiff::renderToTextFromOpcodes()
时,没有任何反应。
我在代码中挖掘了一下,发现回调不起作用。注释掉一些后
if ( !is_callable($callback) ) {
return;
}
我遇到了错误:
警告:call_user_func() 期望参数 1 是一个有效的回调,在 /var/www/sopos-blog/src/Sopos/WikiBundle/Services/FineDiff.php 第 321 行中找不到类“FineDiff”。
这些是一些相关的代码行:
public static function renderToTextFromOpcodes($from, $opcodes) {
ob_start();
FineDiff::renderFromOpcodes($from, $opcodes, array('FineDiff','renderToTextFromOpcode'));
return ob_get_clean();
}
// ...
public static function renderFromOpcodes($from, $opcodes, $callback) {
if ( !is_callable($callback) ) {
return;
}
$opcodes_len = strlen($opcodes);
$from_offset = $opcodes_offset = 0;
while ( $opcodes_offset < $opcodes_len ) {
$opcode = substr($opcodes, $opcodes_offset, 1);
$opcodes_offset++;
$n = intval(substr($opcodes, $opcodes_offset));
if ( $n ) {
$opcodes_offset += strlen(strval($n));
}
else {
$n = 1;
}
if ( $opcode === 'c' ) { // copy n characters from source
call_user_func($callback, 'c', $from, $from_offset, $n, '');
$from_offset += $n;
}
// ...