Public API
This extension follows Semantic Versioning from 1.0.0 onwards. That promise needs a boundary: without one, every class the service container can reach would be frozen for the whole 1.x line.
This page is that boundary. What it lists as stable will not break in a minor or patch release. Everything else is internal and may change at any time, even though PHP's visibility rules do not stop you from calling it.
Stable
Extension points
Two service tags, and the interfaces behind them. Tag a service and the matching
factory picks it up — the strategy whose get equals the configured
value wins, and no code in this extension needs to know it exists.
-
- Type
- service tag
The tagged service must implement
Netresearch. It decides which cache tags a transition flushes.Temporal Cache Service Scoping Scoping Strategy Interface
-
- Type
- service tag
The tagged service must implement
Netresearch. It decides whether a transition shortens the page cache lifetime, is handed to the scheduler task, or both.Temporal Cache Service Timing Timing Strategy Interface
services:
Vendor\MyExtension\Scoping\MyScopingStrategy:
tags:
- { name: 'nr_temporal_cache.scoping_strategy' }
Both interfaces extend Netresearch,
which contributes get. Adding a method to any of the three would be
a breaking change and will not happen inside 1.x.
Monitoring additional tables
Netresearch — the methods
register, is, get and
get.
Register in ext_localconf.php, which is the recipe that works:
\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
\Netresearch\TemporalCache\Service\TemporalMonitorRegistry::class
)->registerTable('tx_myext_domain_model_event', ['uid', 'pid', 'starttime', 'endtime']);
Value objects
Netresearch and
Netresearch. Their readonly
properties are part of the API, because a scoping or timing strategy written
against the interfaces above receives them and reads those properties.
Configuration keys
The eleven keys in ext_conf_template.txt, documented in
Optimization strategies. Removing one is a breaking change; 0.9.0
removed timing. for exactly that reason, before 1.0 made
it costly.
Not stable
Everything below is reachable through the container — several of these are
public: true, and TYPO3 forces every Singleton implementation
public regardless of what Services. says. Reachable is not the same
as supported:
Configuration— read configuration through TYPO3's own API, not through this class.Extension Configuration Service,Scoping Scoping Strategy Factory Service— resolve strategies for the extension itself.Timing Timing Strategy Factory - the three shipped scoping strategies and the three shipped timing strategies
as concrete classes. Depend on the interfaces, not on
Globaland its siblings.Scoping Strategy Service,Refindex Service Service,Harmonization Service Service, everything under :php:`ServiceBackend`.Cache Transition Cache DomainandRepository Temporal Content Repository Temporal— the interface exists so the extension's own tests can double it, not as an implementation contract for third parties.Content Repository Interface Event,Listener Temporal Cache Lifetime Task,Temporal Cache Scheduler Task Report,Temporal Cache Status Report Controller— public so TYPO3 can instantiate them.Backend Temporal Cache Controller - the console commands. Their names are stable; their classes are not.
Deprecation policy
Anything listed under Stable is removed only in a major release, and
only after being marked @deprecated in a minor release first, with the
replacement named in the annotation and in the changelog. A deprecation stands
for at least one minor release before removal.
Behaviour can change in a minor release where the current behaviour is a defect — 0.9.0 did this when hybrid timing began honouring both of its rules, and the changelog said so under Upgrade impact. Such a change is always announced there.
Reading the annotations
The code carries the same information:
@apimarks a class, interface or method covered by this page.@internalmarks one that is not, whatever its PHP visibility.- An unannotated symbol is internal. When the two disagree, this page wins.