Automattic\WooCommerce\Utilities

CallbackUtil::get_callback_signature │ public static │ WC 10.5.0

Get a stable signature for a callback that can be used for hashing.

This method normalizes callbacks into consistent string representations, regardless of changes in dynamic properties in callback instances.

Метод класса: CallbackUtil{}

Хуков нет.

Возвращает

string. Normalized callback signature.

Использование

$result = CallbackUtil::get_callback_signature( $callback ): string;
$callback(callable|разное) (обязательный)
A PHP callback.

Список изменений

С версии 10.5.0 Введена.

Код CallbackUtil::get_callback_signature() WC 11.2.2

public static function get_callback_signature( $callback ): string {
	if ( is_string( $callback ) ) {
		// Standalone function.
		return $callback;
	}

	if ( is_array( $callback ) && 2 === count( $callback ) ) {
		$target = $callback[0];
		$method = $callback[1];

		if ( ( is_object( $target ) || is_string( $target ) ) && is_string( $method ) ) {
			// Array callback (class method).
			$class = is_object( $target ) ? get_class( $target ) : $target;
			return "{$class}::{$method}";
		}
	}

	if ( $callback instanceof \Closure ) {
		// Closure.
		try {
			return self::get_closure_signature( $callback );
		} catch ( \Exception $e ) {
			return 'Closure@' . spl_object_hash( $callback );
		}
	}

	if ( is_object( $callback ) ) {
		// Invokable object.
		try {
			return self::get_invokable_signature( $callback );
		} catch ( \Exception $e ) {
			return get_class( $callback ) . '::__invoke';
		}
	}

	// phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize -- Fallback for unknown callback types.
	return serialize( $callback );
}