php-standard-library/psalm-plugin
Psalm plugin for PHP Standard Library (PSL) that improves static analysis of PSL Type specifications. It gives Psalm precise inferred types for shapes and coerce results, such as exact array shapes instead of broad unions. Install with Composer as a dev dependency and enable via psalm-plugin.
Supported installation method is via composer:
composer require php-standard-library/psalm-plugin --dev
To enable the plugin, add the Psl\Psalm\Plugin class to your psalm configuration using psalm-plugin binary as follows:
php vendor/bin/psalm-plugin enable php-standard-library/psalm-plugin
Given the following example:
use Psl\Type;
$specification = Type\shape([
'name' => Type\string(),
'age' => Type\int(),
'location' => Type\optional(Type\shape([
'city' => Type\string(),
'state' => Type\string(),
'country' => Type\string(),
]))
]);
$input = $specification->coerce($_GET['user']);
/** @psalm-trace $input */
Psalm assumes that $input is of type array<"age"|"location"|"name", array<"city"|"country"|"state", string>|int|string>.
If we enable the php-standard-library/psalm-plugin plugin, you will get a more specific
and correct type of array{name: string, age: int, location?: array{city: string, state: string, country: string}}.
| PSL | Psalm plugin | Psalm |
|---|---|---|
| 2.x | ^2.1 | v5 |
| 2.x | ~2.0.0 | v4 |
| 1.x | 1.x | v4 |
Thanks to our sponsors and supporters:
| JetBrains |
|---|
The MIT License (MIT). Please see LICENSE for more information.
How can I help you explore Laravel packages today?