return $this->_doCache(function () { echo '[Вычисление] '; return '{Результат} '; }, __METHOD__); } /** * @return mixed */ public static function lazyStaticMethod() { echo PHP_EOL . '[Вызван ' . __METHOD__ . '] '; return self::_doCacheStatic(function () { echo '[Вычисление] '; return '{Результат} '; }, __METHOD__); } } $object = new SomeClass(); echo '<pre>'; echo $object->lazyMethod(); // [Вызван SomeClass::lazyMethod] [Вычисление] {Результат} echo $object->lazyMethod(); // [Вызван SomeClass::lazyMethod] {Результат} echo $object->lazyMethod(); // [Вызван SomeClass::lazyMethod] {Результат} echo $object->lazyStaticMethod(); // [Вызван SomeClass::lazyStaticMethod] [Вычисление] {Результат} echo $object->lazyStaticMethod(); // [Вызван SomeClass::lazyStaticMethod] {Результат} echo $object->lazyStaticMethod(); // [Вызван SomeClass::lazyStaticMethod] {Результат}