Memoize Function Helpers#

memoize(callable, params)#

memoize($callable, $params) caches return values by:

  • callable signature

  • normalized parameters hash

Internally this uses Memoizer::get().

$sum = memoize(fn (int $a, int $b) => $a + $b, [2, 3]);

remember(object, callable, params)#

remember($object, $callable, $params) caches values per object instance (using WeakMap inside Memoizer).

When the object is garbage-collected, its memoized bucket is removable.

$svc = new MyService();

$value = remember($svc, fn () => expensiveLookup());

once(callback)#

once($callback) is call-site based memoization via OnceMemoizer.

Key details:

  • cache key includes caller context + callback fingerprint

  • closure source fingerprinting is memoized

  • bounded cache size (2048 entries), oldest entry evicted

$token = once(fn () => bin2hex(random_bytes(16)));

Inspecting/Resetting Memoizer State#

$memo = memoize();
$stats = $memo->stats(); // ['hits' => ..., 'misses' => ..., 'total' => ...]

$memo->flush();