component; } public function valueFor(CarbonInterface $targetMonday): ?float { $week = (int) $targetMonday->format('W'); // ISO week number 1..53 $angle = 2.0 * M_PI * $week / 52.0; return $this->component === 'sin' ? sin($angle) : cos($angle); } public function sourceDates(CarbonInterface $targetMonday): array { return []; } }