HEX
Server: Apache/2.4.65 (Debian)
System: Linux 88f31f35b0b8 6.1.0-38-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.147-1 (2025-08-02) x86_64
User: www-data (33)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/plugins/wp-seopress/src/Helpers/CachedMemoizeFunctions.php
<?php // phpcs:ignore

namespace SEOPress\Helpers;

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * CachedMemoizeFunctions
 */
abstract class CachedMemoizeFunctions {
	/**
	 * The cache.
	 *
	 * @var array
	 */
	protected static $cache = array();

	/**
	 * The memoize function.
	 *
	 * @param callable $func The function.
	 *
	 * @return callable
	 */
	public static function memoize( $func ) {
		$cache = &self::$cache;
		return function () use ( $func, &$cache ) {
			$args = func_get_args();
			$key  = md5( serialize( $args ) ); // phpcs:ignore -- This is safe to use serialize.

			if ( ! isset( $cache[ $key ] ) ) {
				$cache[ $key ] = call_user_func_array( $func, $args );
			}

			return $cache[ $key ];
		};
	}
}