Skip to content

Instantly share code, notes, and snippets.

@whoami15
Forked from calebporzio/memoize.php
Created March 16, 2023 14:29
Show Gist options
  • Save whoami15/5252b37c8563e5573c68737dc05e4488 to your computer and use it in GitHub Desktop.
Save whoami15/5252b37c8563e5573c68737dc05e4488 to your computer and use it in GitHub Desktop.
<?php
function memoize($target) {
static $memo = new WeakMap;
return new class ($target, $memo) {
function __construct(
protected $target,
protected &$memo,
) {}
function __call($method, $params)
{
$this->memo[$this->target] ??= [];
$signature = $method . crc32(json_encode($params));
return $this->memo[$this->target][$signature]
??= $this->target->$method(...$params);
}
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment