Тема: Задача на 5
Всім привіт. Сьогодні виконав цікаву задачу вирішив запитати і вас, можливо хтось вирішить.
Отже є код
class Dealer {
public $name = null;
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return MemoryCache::load(function () {
return strtolower($this->name); //point 1
});
}
public function getUName() {
return MemoryCache::load(function () {
return strtoupper($this->name); //point 2
});
}
}
$dealer = new Dealer('funivan');
echo $dealer->getName() . "\n";
echo $dealer->getName() . "\n";
echo $dealer->getName() . "\n";
echo $dealer->getUName() . "\n";
echo $dealer->getUName() . "\n";
echo $dealer->getUName() . "\n";
Необхідно реалізувати клас MemoryCache так, що б функції (там де point 1 i point 2 ) виконувались тільки 1н раз. Клас Dealer міняти не можна.
Враховуємо що у нас може буди безліч класів які викликають MemoryCache::load
Також ми не знаємо порядку виклику getName і getUName
Версія PHP - немає значення)
Для чого ця вся штука. Це простий приклад у якому функція обробки ім’я працює дуже швидко, але ми у кеш можемо засунути результат функції яка виконується досить довго. Відповідно всі наступні виклики будуть швидші.
Для тих хто знає відповідь засовуємо вирішення у тег code і це у spoiler
Бажаю успіху.