[wp-trac] [WordPress Trac] #44979: Parameter 1 to wp_default_styles() expected to be a reference, value given
WordPress Trac
noreply at wordpress.org
Tue Feb 25 00:36:21 UTC 2020
#44979: Parameter 1 to wp_default_styles() expected to be a reference, value given
-------------------------------------------------+-------------------------
Reporter: jqz | Owner:
| SergeyBiryukov
Type: defect (bug) | Status: accepted
Priority: normal | Milestone: 5.4
Component: Script Loader | Version:
Severity: normal | Resolution:
Keywords: has-patch needs-testing dev- | Focuses:
feedback |
-------------------------------------------------+-------------------------
Comment (by SergeyBiryukov):
In my testing, the issue happens with:
* PHP 7.2.x, `php_tideways_xhprof` extension (tested versions 5.0.1 and
5.0.2).
* PHP 7.2.x, `php_uopz` extension (version 5.0.2).
Does not happen with:
* PHP 7.2.x and later, `php_uopz` extension (version 5.1.0+).
* PHP 7.3.x and later, `php_tideways_xhprof` extension.
Replacing `do_action_ref_array()` with `do_action()` was previously
explored in #16661 and #25160. It might actually break things and cause
the same warning if plugins hooked to `wp_default_scripts` still use a
reference in the function signature, for example:
{{{
function my_scripts( &$scripts ) {
...
}
add_action( 'wp_default_scripts', 'my_scripts' );
}}}
As noted in comment:23:ticket:25160, the warning is caused by
`call_user_func_array()` usage in [source:tags/5.3/src/wp-includes/class-
wp-hook.php?marks=288#L265 WP_Hook::apply_filters()]. As a bit more
complete illustration from comment:24:ticket:25160, this snippet:
{{{
include 'wp-load.php';
class Test_Me {
function __construct() {
do_action( 'woo', $this );
}
}
function __woo( &$ref ) {
}
add_action( 'woo', '__woo' );
new Test_Me();
exit();
}}}
produces: `PHP Warning: Parameter 1 to __woo() expected to be a reference,
value given`.
In my testing, `do_action_ref_array()` is not the issue here (there are
~90 instances of `do_action_ref_array()` and `apply_filters_ref_array()`
in core that don't cause the warning).
The real issue is the reference in these function signatures:
{{{
function wp_register_tinymce_scripts( &$scripts, $force_uncompressed =
false )
function wp_default_packages_vendor( &$scripts )
function wp_get_script_polyfill( &$scripts, $tests )
function wp_default_packages_scripts( &$scripts )
function wp_default_packages_inline_scripts( &$scripts )
function wp_default_packages( &$scripts )
function wp_default_scripts( &$scripts )
function wp_default_styles( &$styles )
}}}
Most of these were just copied from `wp_default_scripts()`. Removing the
references appears to resolve the warnings without affecting the
functionality.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/44979#comment:27>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list