Make WordPress Core

Ticket #48074: 48074-src-Remove-work-arounds-for-spl_object_hash.patch

File 48074-src-Remove-work-arounds-for-spl_object_hash.patch, 3.4 KB (added by jrf, 5 years ago)

[src] Remove work-arounds for spl_object_hash() - The sp_object_hash() function was introduced in PHP 5.2.0 and as of PHP 5.3, the PHP SPL extension can no longer be disabled, so these work-arounds are no longer needed. See: https://www.php.net/manual/en/function.spl-object-hash.php

  • src/wp-includes/class-wp-widget-factory.php

    From 026de6863848a0e6f06b84cf6b5ce1368331fc58 Mon Sep 17 00:00:00 2001
    From: jrfnl <jrfnl@users.noreply.github.com>
    Date: Sat, 27 Jul 2019 04:32:51 +0200
    Subject: [PATCH] [src] Remove work-arounds for spl_object_hash()
    
    ---
     src/wp-includes/class-wp-widget-factory.php | 33 ++-------------------
     src/wp-includes/plugin.php                  | 18 +----------
     2 files changed, 3 insertions(+), 48 deletions(-)
    
    diff --git a/src/wp-includes/class-wp-widget-factory.php b/src/wp-includes/class-wp-widget-factory.php
    index 68f4623098..ec5a96d6a9 100644
    a b class WP_Widget_Factory { 
    5555         */
    5656        private $hashed_class_counts = array();
    5757
    58         /**
    59          * Hashes an object, doing fallback of `spl_object_hash()` if not available.
    60          *
    61          * This can be eliminated in favor of straight spl_object_hash() when 5.3
    62          * is the minimum requirement for PHP.
    63          *
    64          * @since 4.6.0
    65          *
    66          * @param WP_Widget $widget Widget.
    67          * @return string Object hash.
    68          */
    69         private function hash_object( $widget ) {
    70                 if ( function_exists( 'spl_object_hash' ) ) {
    71                         return spl_object_hash( $widget );
    72                 } else {
    73                         $class_name = get_class( $widget );
    74                         $hash       = $class_name;
    75                         if ( ! isset( $widget->_wp_widget_factory_hash_id ) ) {
    76                                 if ( ! isset( $this->hashed_class_counts[ $class_name ] ) ) {
    77                                         $this->hashed_class_counts[ $class_name ] = 0;
    78                                 }
    79                                 $this->hashed_class_counts[ $class_name ] += 1;
    80                                 $widget->_wp_widget_factory_hash_id        = $this->hashed_class_counts[ $class_name ];
    81                         }
    82                         $hash .= ':' . $widget->_wp_widget_factory_hash_id;
    83                         return $hash;
    84                 }
    85         }
    86 
    8758        /**
    8859         * Registers a widget subclass.
    8960         *
    class WP_Widget_Factory { 
    9566         */
    9667        public function register( $widget ) {
    9768                if ( $widget instanceof WP_Widget ) {
    98                         $this->widgets[ $this->hash_object( $widget ) ] = $widget;
     69                        $this->widgets[ spl_object_hash( $widget ) ] = $widget;
    9970                } else {
    10071                        $this->widgets[ $widget ] = new $widget();
    10172                }
    class WP_Widget_Factory { 
    11283         */
    11384        public function unregister( $widget ) {
    11485                if ( $widget instanceof WP_Widget ) {
    115                         unset( $this->widgets[ $this->hash_object( $widget ) ] );
     86                        unset( $this->widgets[ spl_object_hash( $widget ) ] );
    11687                } else {
    11788                        unset( $this->widgets[ $widget ] );
    11889                }
  • src/wp-includes/plugin.php

    diff --git a/src/wp-includes/plugin.php b/src/wp-includes/plugin.php
    index 1f6cacd5b4..c83ebdb81f 100644
    a b function _wp_filter_build_unique_id( $tag, $function, $priority ) { 
    925925
    926926        if ( is_object( $function[0] ) ) {
    927927                // Object Class Calling
    928                 if ( function_exists( 'spl_object_hash' ) ) {
    929                         return spl_object_hash( $function[0] ) . $function[1];
    930                 } else {
    931                         $obj_idx = get_class( $function[0] ) . $function[1];
    932                         if ( ! isset( $function[0]->wp_filter_id ) ) {
    933                                 if ( false === $priority ) {
    934                                         return false;
    935                                 }
    936                                 $obj_idx                  .= isset( $wp_filter[ $tag ][ $priority ] ) ? count( (array) $wp_filter[ $tag ][ $priority ] ) : $filter_id_count;
    937                                 $function[0]->wp_filter_id = $filter_id_count;
    938                                 ++$filter_id_count;
    939                         } else {
    940                                 $obj_idx .= $function[0]->wp_filter_id;
    941                         }
    942 
    943                         return $obj_idx;
    944                 }
     928                return spl_object_hash( $function[0] ) . $function[1];
    945929        } elseif ( is_string( $function[0] ) ) {
    946930                // Static Calling
    947931                return $function[0] . '::' . $function[1];