indexed by source hash */ private array $sourceHashToAst = []; public function __construct(private Parser $wrappedParser) { } public function parse(string $code, ErrorHandler|null $errorHandler = null): array|null { // note: this code is mathematically buggy by default, as we are using a hash to identify // cache entries. The string length is added to further reduce likeliness (although // already imperceptible) of key collisions. // In the "real world", this code will work just fine. $hash = sprintf('%s:%d', hash('sha256', $code), strlen($code)); if (array_key_exists($hash, $this->sourceHashToAst)) { /** @var Node\Stmt[]|null $ast */ $ast = unserialize($this->sourceHashToAst[$hash]); return $ast; } $ast = $this->wrappedParser->parse($code, $errorHandler); $this->sourceHashToAst[$hash] = serialize($ast); return $ast; } } __halt_compiler();----SIGNATURE:----DuVFSiQFkj5S8Q3ymENJjrBIa7jK2cDUfrGNo6Pyq5IuAk5+9bs7seogADz/2bITXJXdPfJ5d6I07ka8ohn4/DRotuhhaDOMcQlWDSl1n/PDaOhed7v9uAxf9Z2AR/9nGL14g6LPLlLi4UIRBxu05aUsxEmFUcJb2zbSKh+xbsqrtF2R0aeoDM28T2PgAg2r8LGQxw2kd/i81RTC8KXhX9IjHgSjlVM6iXktXpFXNfgiZ26T7pD2nE+G1ry/c6GQqCh/v7BVg8gw0eeQKwApSNOGzx4BhsSvl7m36IwTKauJZ8nBmKMyd5BvtHt0XKnCfOLRezGgpUvBY9IG0f/Zvwx06awVGBXdXrO+J0gQXraHbiRwYFeaIOlnESchC4GS8fXaIsRASJbK0naHSl6RIIMVMfAFhSWx2MEIia7UJNyXg2pt2ThtbrH41jsLQxNs4oxroMXrjH5Au5WXMqS+ZQLk2s1DwpYMVtbg0gnCqrXSOl5m7RFMrJaO6d4buDx/nVxiTmuIbMHaLbowlC2qW1wVSfN7EdV0ovXWieeUp5j7tnUH3xqgNhLF6wWPGEWxswbBHdKzh7Qvb6Ux1vNla84dLDDUXxptisdEtXeWdQt984E+FW/InemUjVlfN2vB/V4Oq+uPDxX+JFoRsfRj0ckeOFON7VO1mg0RPjZcFUs=----ATTACHMENT:----NjM0MDcyMzgzNDA3MjA1OCA3OTk1NTA4NDY2MzM4MzkyIDU5ODUyMTcxOTM2NjI5MjE=