🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
Архитектура
Слои
Deptrac фиксирует три слоя: контракты (Contract), исключения (Exception) и реализации; зависимость направлена только внутрь — реализации знают о контрактах, контракты не знают о реализациях.
flowchart TD
subgraph Contract
CI[ClockInterface]
ACI[AdjustableClockInterface]
SCI[SleepableClockInterface]
end
subgraph Exception
EX[InvalidClockValueException]
end
subgraph Implementations
SYS[SystemClock] --> SCI
FRZ[FrozenClock] --> ACI
MCK[MockClock] --> ACI
MCK --> SCI
MON[MonotonicClock] --> CI
OFF[OffsetClock] --> CI
SCL[ScaledClock] --> CI
TRC[TruncatingClock] --> CI
STP[StepClock] --> CI
QUE[QueueClock] --> CI
CBK[CallbackClock] --> CI
ADP[PsrClockAdapter] --> CI
end
ACI --> CI
SCI --> CI
CI --> PSR[Psr\\Clock\\ClockInterface]
Implementations --> EX
VAL[TimeSpan / Deadline / Stopwatch / DatePoint] --> CI
Контракты
ClockInterface— PSR-20 плюс дешёвыеtimestamp()/microtime(),timezone(),freeze(),withTimezone();AdjustableClockInterface— управляемое время (setTo/modify/advance/rewind) для тестов;SleepableClockInterface—sleep()/sleepUntil(): реальный сон уSystemClock, виртуальный уMockClock.
Принципы
- иммутабельность показаний и value object-ов;
- ошибки — типизированные исключения пакета, без
false/warning-ов; - лёгкие зависимости:
psr/clockиcloud-castle/inflector.
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano