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:----SrQ0XbnjT4VHjab1050XyCJVtF7Q4cdIYqyPq0o3DA7bYVnMqVCVG5Gg0RWw8FTyQ2fQZqH9TTgL8lLrJDtP0meTSS8DtKsXlmxhDeYmRxjqYbK6N2FGquasf4NT9ys2obbva+EU21+k1d908SPYU4lDfv2i+tnuZcb4ucdVBjeM6ayOz8pHGwDzgp5x1AHIhoD3uKRNvdrZw8YioStdBZqWaikOoOWqVNieF61BTbPn5DdH6Vuvf3OvET1tQZynKQqwd81k2OsRW/6VgGTcL5doN1jS25t72/ecuvrfoeoSSTTbETUOSZjd9DQzM3qCDB1j3qSRS4WK0z63AjVMCYncwOKEWqNzUKE0r3Dx2N/1WbxMUGqt5h06UuR/iVjxIK3BZykH9TByjxa61wfTTP7wvWNgQFKmOuAiUHO8zfE+uvPB4WNYRAWfGJ7JtrzVr7Ie/8goLNjjIQ9WxosSIIJgQxm7y8kG7uyhH3qjinE2/f6nI9YxlyirIzRFKRIO7PHJMewVgWTog0y3QAC0CbUMwtqUq/8M22mHaW6SV40JoOx0l4Ak0GrQQWl7AwpNIgtzjTKE2Wfra6m8FlXSvDvq2DP5IKG2xSS1ETNnHnHvhZ4aOrak4WLzfbi0b0X0DB3+DJyhSHNz4V9BixihX5FUtCFUWBKlL4cMGNvy08o=----ATTACHMENT:----NzgzOTA1NzY2MjUxMzIxOCA3MjU4Nzg1ODY3NjI1Mjc2IDMyODYyNjIwNDgwMjI0Mzg=