Weave 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

Psalm Plugin Laravel Package

php-static-analysis/psalm-plugin

A Psalm plugin for PHP static analysis that extends Psalm with additional checks and integrations, helping teams catch issues earlier and enforce consistent code quality in their projects.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for a declarative metadata layer. If the roadmap includes attribute-driven configuration (feature flags, rate limits, audit markers, serialization hints), this package absorbs the reflection and discovery plumbing we would otherwise write and maintain ourselves. 0.5.0 storing attribute parameters removes one of the stronger arguments for a hand-rolled reader.
  • Runtime performance budget. Caching parameters instead of re-reflecting on each read matters wherever attributes are touched on a hot path — middleware, routing, request/response transformation. It also makes the read path more compatible with config/route caching, though that needs verification in our own environment.
  • Ergonomics as a roadmap input. "Easier to use without needing reflection" lowers the cost of exposing attributes to product engineers. That makes attribute-based APIs a more credible option in design discussions than a framework-internal detail.
  • Dependency risk posture. This is a 0.x release. That is a decision input: exact version pinning, spike-vs-commit placement, and whether we allow it in a long-lived service or only in a timeboxed experiment.
  • Scope discipline. Small, incremental releases like this suggest a narrow package rather than a framework. Useful signal for judging whether it stays a utility or tries to grow into something we'd have to adopt wholesale.

When to Consider This Package

Adopt when:

  • We are on PHP 8.1+ and are already standardizing on attributes over annotations or config arrays.
  • More than one consumer needs to read attribute arguments, and we don't want each one reimplementing reflection plus instance resolution.
  • Attributes sit on a per-request path and reflection cost is measurable, not theoretical.
  • The team is comfortable owning a 0.x dependency with a small surface area and pinning the version.

Look elsewhere when:

  • Attributes appear in only one or two places — native ReflectionAttribute::newInstance() is sufficient and adds no dependency.
  • We need a 1.x stability or support guarantee. This release does not provide one.
  • The underlying need is validation, routing, or DI — Laravel and Symfony already solve those; adding a layer on top is complexity without payoff.
  • We cannot verify behavior under opcache, config:cache, and route:cache, or with inherited/abstract classes and repeatable attributes.

Caveat for this review: the release note is a single line. There is no changelog history, benchmark, or API documentation in the supplied data, so the performance and ergonomics claims are unverified. Treat the adoption decision as pending a short technical spike rather than settled.

How to Pitch It (Stakeholders)

Executives: A small open-source PHP package that lets us declare behavior with language-level attributes instead of boilerplate code. Version 0.5.0 makes those declarations cheaper to read at runtime — an efficiency and developer-ergonomics improvement, not a new capability. Cost to trial is low; the main risk is maturity, since it is pre-1.0 and can change without notice. Recommendation: pin the version and run it as a scoped spike before it appears in any committed roadmap item.

Engineering: 0.5.0 stores attribute parameters at discovery time so consumers can read arguments without reflection — fewer newInstance() calls and a cleaner interface for anyone writing an attribute reader. It remains 0.x: expect breaking changes and no LTS. Proposed next step is a timeboxed spike that wires one real attribute (a feature flag or rate-limit marker), benchmarks it against raw reflection, and confirms it survives php artisan optimize and cache warm-up before we take a dependency on it.

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.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package