Download the PHP package interaction-design-foundation/psalm-laravel-nova without Composer

On this page you can find all versions of the php package interaction-design-foundation/psalm-laravel-nova. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package psalm-laravel-nova

Psalm plugin for Laravel Nova

Latest Version on Packagist Total Downloads

A Psalm plugin that resolves Laravel Nova's magic: the reflective dispatch and @method annotations that static analysis cannot follow on its own. Works with Laravel apps and Nova packages.

This plugin covers Nova only. Install it in addition to psalm/plugin-laravel, which covers the Laravel framework itself. It is not a replacement.

Nova dispatches resources, actions, filters, lenses, cards, tools, dashboards and metrics through reflection and naming conventions that live entirely inside laravel/nova. Psalm cannot see those call sites, and several Nova base classes carry @method annotations whose signatures do not describe what their subclasses actually accept. The result is a stream of false positives on an otherwise clean Nova codebase.

This plugin removes them. Its guiding principle is silence over false positives: when a type cannot be resolved with confidence, the plugin declines and lets Psalm fall back to its own inference rather than guessing.

Installation

Then enable it:

Keep psalm/plugin-laravel installed and enabled alongside it: this plugin handles Nova-specific conventions and relies on the Laravel plugin for everything else (Eloquent models, facades, container bindings).

What it does

make() calls are checked against the right constructor

Laravel\Nova\Element declares @method static static make(string|null $component = null) and Laravel\Nova\Panel declares its own differently-shaped @method make(...). Psalm stores @method annotations as pseudo methods and, during static-call resolution, gives an ancestor's pseudo method priority over the class's own real (variadic) make(). Because almost no concrete Nova field or panel declares its own @method make(...) override, every Text::make('Label', 'column') resolves against Element's single-optional-parameter signature and reports TooManyArguments.

NovaMakeSignatureHandler gives each class a make() signature derived from its own constructor.

Resource query methods are narrowed to the resource's model

Nova's Resource::indexQuery(), relatableQuery() and friends receive a Builder that Psalm sees as Builder<Model>. NovaResourceQueryMethodHandler narrows it to the resource's concrete model, resolved in two steps:

  1. the @extends \Laravel\Nova\Resource<ConcreteModel> template binding, including when inherited transitively through intermediate base classes;
  2. the public static $model = SomeModel::class convention property, read from the AST when no template binding resolves.

The property value is validated (it must exist and be a genuine Model subclass) before narrowing, so a typo never produces a confidently wrong type.

$this->when(...) no longer poisons fields()

Illuminate\Http\Resources\ConditionallyLoadsAttributes::when() returns mixed, which degrades the inferred element type of every array literal built with it, including Nova's fields() and actions(). NovaWhenReturnTypeHandler introspects the argument and returns the closure's return type (or the value's type) unioned with MissingValue. A literal true/false condition drops the dead branch. When the type cannot be resolved, the provider declines rather than leaking a raw Closure into the union.

Reflectively dispatched members are not reported as unused

Under findUnusedCode="true", members Nova reaches by reflection have no visible call site. NovaSuppressHandler covers the ones that stubs cannot express, mirroring what Psalm\LaravelPlugin\Handlers\SuppressHandler does for Laravel:

Hook methods that override a base declaration (fields(), apply(), calculate(), …) already inherit the parent's "used" status from the stubs, so they need no suppression.

Nova stubs

The plugin ships stubs for Action, Field, Element, PartitionResult, Panel and Resource that fix vendor signatures Psalm cannot resolve. Resource is templated, so a resource can declare its model with @extends:

The stubs are registered by the plugin itself; no <stubs> entry is needed in psalm.xml.

Requirements

laravel/nova is not a dependency: the plugin relies on its own stubs and resolves everything else from the analysed codebase.

Contributing

Pull requests are welcome. Run the checks before opening one:

License

MIT. Copyright © The Interaction Design Foundation.


All versions of psalm-laravel-nova with dependencies

PHP Build Version
Package Version
Requires php Version ^8.4
vimeo/psalm Version ^7.0.0-beta19 || dev-master
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package interaction-design-foundation/psalm-laravel-nova contains the following files

Loading the files please wait ...