Upgrade

Upgrade na verzi 4.0

Minimální požadovaná verze PHP je 8.4. Značka {cache} vyžaduje Latte 3.1.

Část práce za vás udělá DressCode s balíčkem dresscode/upgrade-nette: přepíše přejmenované třídy a konstanty a ohlásí, co přepsat nedokáže. Viz Upgrade Nette.

Rozhraní Nette\Caching\IStorage, Nette\Caching\IBulkReader a Nette\Caching\Storages\IJournal byla odstraněna; použijte Nette\Caching\Storage, Nette\Caching\BulkReader a Nette\Caching\Storages\Journal. Odstraněny byly i aliasy služeb cacheStorage a nette.cacheJournal; použijte služby cache.storage a cache.journal, případně autowiring.

Konstanty psané velkými písmeny, třeba Cache::EXPIRE nebo Cache::TAGS, a metoda Cache::start() nyní vyvolávají E_USER_DEPRECATED. Použijte Cache::Expire, Cache::Tags a capture(). Předávat closure jako data do Cache::save() je zastaralé, předejte ji jako generátor do load().

Závislosti lze zapsat novým objektem Nette\Caching\Dependencies, viz Expirace a invalidace. Pole s klíči Cache::* dál funguje, ale neznámý klíč nebo hodnota špatného typu nyní vyhodí výjimku. Typicky jde o prioritu zapsanou jako řetězec, třeba '50', která musí být celé číslo.

Metoda Cache::clean() přijímá podmínky jako pojmenované argumenty, třeba $cache->clean(tags: ['article/10']); pole se kontroluje stejně jako závislosti. Několik věcí se chová jinak:

  • clean() bez jakékoliv podmínky vyhodí výjimku. Vyexpirované položky smažete voláním clean([]) na úložišti.
  • all u cache s jmenným prostorem smaže jen tento prostor a prostory z něj odvozené; dříve smazal celé úložiště. Pokud chcete smazat vše, zavolejte ho na cache bez jmenného prostoru, nebo zavolejte $storage->clean([Cache::All => true]).
  • Mazání podle Cache::Namespaces smaže i prostory odvozené od uvedených pomocí derive().

Úložiště vyhodí Nette\NotSupportedException pro závislost nebo podmínku, kterou neumí, místo aby ji potichu ignorovalo. SQLiteStorage nepodporuje priority ani závislosti na souborech, konstantách, callbackech a jiných položkách; MemcachedStorage nepodporuje mazání podle jmenných prostorů. Viz přehled úložišť.

PsrCacheAdapter nyní kontroluje klíče tak, jak vyžaduje PSR-16, takže odmítne klíče obsahující některý ze znaků {}()/\@:, třeba user:1.

Pokud jste napsali vlastní úložiště, odstraňte metodu lock(), která už neexistuje, a deklarujte návratový typ mixed metody read(). Úložiště, které má chybějící položku nechat vygenerovat jen jednomu procesu, implementuje rozhraní Nette\Caching\LockingReader. Potomek Cache, který přepisuje clean(), musí deklarovat její nové parametry.

Upgrade na verzi 3.1

  • metoda Nette\Caching\Cache::start() byla přejmenována na capture()

Upgrade na verzi 2.4

  • třída Nette\Caching\Storages\FileJournal již není k dispozici

Upgrade na verzi 2.3

  • prastará a zastaralá ArrayAccess syntaxe $val = $cache[$key] nebo $cache[$key] = $val vyvolá E_USER_DEPRECATED; použijte místo ní $cache->load($key) a $cache->save($key, $val)