Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Clock Laravel Package

symfony/clock

Symfony Clock decouples your code from the system clock. Inject ClockInterface to get DateTimeImmutable via now(), control timezones, and pause execution with sleep(). Ideal for testable, time-sensitive services without relying on global time.

View on GitHub
Deep Wiki
Context7

Decouples applications from the system clock

Frequently asked questions about Clock
How do I integrate Symfony Clock into a Laravel application?
Use Composer to install it (`composer require symfony/clock`), then bind `ClockInterface` in Laravel’s service container. For example, register `NativeClock` as a singleton in `AppServiceProvider` or inject it directly into services. Replace `now()` calls with `$clock->now()` and `sleep()` with `$clock->sleep()`.
Will Symfony Clock break existing Carbon or DateTime usage in Laravel?
No, it won’t break existing code. Symfony Clock works alongside Carbon and DateTime. You can incrementally adopt it by injecting `ClockInterface` only where needed (e.g., tests, jobs, or time-sensitive services) without changing legacy code.
Can I use Symfony Clock for testing time-sensitive Laravel features?
Yes, it’s ideal for testing. Replace `Carbon::setTestNow()` or `travel()` with `MockClock` to simulate time in tests. This makes tests deterministic and eliminates flaky time-based assertions. Works seamlessly with Laravel’s testing tools.
Does Symfony Clock support Laravel’s job queues (e.g., Horizon) for delays?
Absolutely. Replace `sleep()` or `usleep()` in jobs with `$clock->sleep()` for predictable delays. This ensures consistent behavior across environments, including retries and exponential backoff in queue workers.
How do I enforce a specific timezone (e.g., UTC) for all services?
Configure a default timezone by wrapping `NativeClock` with `withTimeZone('UTC')` in your service container binding. This ensures all services use UTC, preventing timezone-related bugs in production or global deployments.
Is Symfony Clock compatible with Laravel 10/11 and PHP 8.1+?
Yes, Symfony Clock requires PHP 8.1+ (for Symfony 7+) or 8.4+ (for Symfony 8+). It works with Laravel 10/11 out of the box. Check your `composer.json` constraints to avoid version conflicts.
Can I use Symfony Clock for event sourcing or replaying past events?
Yes, Symfony Clock supports time-warping. You can simulate past/future timestamps by injecting a custom clock (e.g., `MockClock` with a fixed time) to replay events or debug race conditions in event-driven architectures.
What’s the performance impact of using Symfony Clock vs. native PHP functions?
The performance impact is negligible. `NativeClock` uses `DateTimeImmutable`, which is optimized in PHP. For delays, `$clock->sleep()` is functionally equivalent to `sleep()` but more predictable in tests and distributed systems.
Are there alternatives to Symfony Clock for Laravel?
Alternatives include Laravel’s built-in `Carbon` with `setTestNow()` or `travel()`, or third-party packages like `spatie/laravel-timezone`. However, Symfony Clock is more robust for production use, offering better testability, timezone control, and integration with Symfony’s ecosystem.
How do I migrate from Carbon’s time helpers (e.g., `now()`, `sleep()`) to Symfony Clock?
Start by injecting `ClockInterface` into new classes or services. Use `$clock->now()` instead of `now()` and `$clock->sleep()` instead of `sleep()`. For existing code, refactor incrementally—prioritize time-sensitive logic like subscriptions, rate limiting, or feature flags. Use IDE refactoring tools to replace calls systematically.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
codraw/framework-extra-bundle
codraw/messenger
codraw/security
codraw/mailer
codraw/contracts
codraw/profiling
codraw/dependency-injection
codraw/tester
codraw/core
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony