Download the PHP package knplabs/phpstan-rules without Composer
On this page you can find all versions of the php package knplabs/phpstan-rules. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download knplabs/phpstan-rules
More information about knplabs/phpstan-rules
Files in knplabs/phpstan-rules
Package phpstan-rules
Short Description PHPStan rules shared across KnpLabs organization projects
License MIT
Homepage https://github.com/KnpLabs/phpstan-rules
Informations about the package phpstan-rules
knplabs/phpstan-rules
PHPStan rules shared across KnpLabs organization projects.
Requirements
- PHP 8.2 or higher
- PHPStan ^2.0
Installation
Using phpstan/extension-installer (recommended)
If you don't use phpstan/extension-installer, include the extension in your phpstan.neon:
Rules
clock.disallowDateTimeNow — PSR-20 Clock Abstraction
Enforces the PSR-20 recommendation to avoid instantiating DateTime or DateTimeImmutable with a relative or implicit date. This makes code that depends on the current time testable and respects the clock abstraction.
Triggers on:
Does not trigger on (absolute date strings and variables are allowed):
Recommended fix: inject Psr\Clock\ClockInterface and call $clock->now():
clock.disallowTimeFunctions — PSR-20 Clock Abstraction (functions)
Enforces the PSR-20 recommendation to avoid using time() or date() directly. This makes code that depends on the current time testable and respects the clock abstraction.
Triggers on:
Does not trigger on (explicit non-"now" timestamps are fine):
Recommended fix: inject Psr\Clock\ClockInterface and call $clock->now():
Contributing
See CONTRIBUTING.md for the human contributor guide.
If you are working with an AI agent, refer to AGENTS.md — it contains the AI-facing instructions for this repository.
Release & Publishing
Releases are fully automated with release-please and published to Packagist as soon as a GitHub release goes out.
Prerequisites (one-time setup)
-
Register the package on Packagist — submit the repository once at packagist.org/packages/submit.
-
Add repository secrets — in GitHub → Settings → Secrets and variables → Actions, create two repository secrets:
Secret name Value PACKAGIST_USERNAMEYour Packagist account username PACKAGIST_API_TOKENAn API token generated on your Packagist profile page
How it works
- Every push to
mainruns theReleaseworkflow (.github/workflows/release.yml), which callsGoogleCloudPlatform/release-please-action. It parses Conventional Commits (feat:,fix:,doc:, etc.) since the last release and keeps a release PR up to date with the bumped version and generatedCHANGELOG.mdentry. - Merging the release PR makes release-please tag the repository and publish the corresponding GitHub release automatically — no manual "Draft a new release" step is needed anymore.
- That GitHub release publish event triggers the
Publishworkflow, which notifies Packagist via its REST API. - The new version appears on Packagist within a few minutes.
Commit messages matter — release-please only picks up a version bump when commits follow the Conventional Commits format. Non-conforming commits are ignored when computing the next version.
Manual re-trigger
If the Publish workflow fails or you need to re-sync Packagist without creating a new release:
- Go to Actions → Publish → Run workflow.
- Click Run workflow (no inputs required).
License
MIT — see LICENSE.