WordPress/wp-includes/wp-diff.php

24 lines
726 B
PHP
Raw Permalink Normal View History

<?php
/**
* WordPress Diff bastard child of old MediaWiki Diff Formatter.
*
* Basically all that remains is the table structure and some method names.
*
* @package WordPress
* @subpackage Diff
*/
if ( ! class_exists( 'Text_Diff', false ) ) {
/** Text_Diff class */
require ABSPATH . WPINC . '/Text/Diff.php';
/** Text_Diff_Renderer class */
require ABSPATH . WPINC . '/Text/Diff/Renderer.php';
/** Text_Diff_Renderer_inline class */
require ABSPATH . WPINC . '/Text/Diff/Renderer/inline.php';
Code Modernization: Fix trigger_error() with E_USER_ERROR deprecation in Text_Diff::_check(). PHP 8.4 deprecates the use of `trigger_errror()` with `E_USER_ERROR` as the error level, as there are a number of gotchas to this way of creating a `Fatal Error` (`finally` blocks not executing, destructors not executing). The recommended replacements are either to use exceptions or to do a hard `exit`. This is an unmaintained external dependency; thus, the fix is made in the WP specific copy of the dependency. Now, there were basically three options: * Silence the deprecation until PHP 9.0 and delay properly solving this until then. This would lead to an awkward solution, as prior to PHP 8.0, error silencing would apply to all errors, while, as of PHP 8.0, it will no longer apply to fatal errors. It also would only buy us some time and wouldn't actually solve anything. * Use `exit($status)`. This would make the code untestable and would disable handling of these errors via custom error handlers, which makes this an undesirable solution. * Throw an exception. This makes for the most elegant solution with the least BC-breaking impact. The third option is implemented which: * Introduces a new `Text_Exception` class. * Starts using that in the `Text_Diff::_check()` method in all applicable places. * Adds tests for the first two error conditions. References: * https://wiki.php.net/rfc/deprecations_php_8_4#deprecate_passing_e_user_error_to_trigger_error * https://www.php.net/manual/en/migration80.incompatible.php Follow-up to [59070], [52978], [7747]. Props jrf. See #62061. Built from https://develop.svn.wordpress.org/trunk@59105 git-svn-id: http://core.svn.wordpress.org/trunk@58501 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-09-27 13:53:19 -04:00
/** Text_Exception class */
require ABSPATH . WPINC . '/Text/Exception.php';
}
require ABSPATH . WPINC . '/class-wp-text-diff-renderer-table.php';
require ABSPATH . WPINC . '/class-wp-text-diff-renderer-inline.php';