From 28eb34e788c6a137b1cc9c3aed4644f32205dd0b Mon Sep 17 00:00:00 2001 From: Saif Eddin Gmati <29315886+azjezz@users.noreply.github.com> Date: Sat, 27 Mar 2021 20:10:18 +0100 Subject: [PATCH] recommand using the psalm-plugin package over builtin integration (#170) --- README.md | 47 ++++++++++++------------------------ composer.json | 5 ++-- integration/Psalm/Plugin.php | 5 ++++ 3 files changed, 24 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index f2e45e7..cd78f61 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ Psl is a standard library for PHP, inspired by [hhvm/hsl](https://github.com/hhv The goal of Psl is to provide a consistent, centralized, well-typed set of APIs for PHP programmers. ## Example + ```php - ... - - ... - - - - -``` +Please refer to the [`php-standard-library/psalm-plugin`](https://github.com/php-standard-library/psalm-plugin) repository. ## Documentation @@ -70,35 +58,32 @@ You can read through the API documentation in [`docs/README.md`](./docs/README.m ## Principles - - All functions should be typed as strictly as possible - - The library should be internally consistent - - References may not be used - - Arguments should be as general as possible. For example, for `array` functions, prefer `iterable` inputs where practical, falling back to `array` when needed. - - Return types should be as specific as possible - - All files should contain `declare(strict_types=1);` +- All functions should be typed as strictly as possible +- The library should be internally consistent +- References may not be used +- Arguments should be as general as possible. For example, for `array` functions, prefer `iterable` inputs where practical, falling back to `array` when needed. +- Return types should be as specific as possible +- All files should contain `declare(strict_types=1);` ## Consistency Rules This is not exhaustive list. - - Functions argument order should be consistent within the library - - All iterable-related functions take the iterable as the first argument ( e.g. `Iter\map` and `Iter\filter` ) - - `$haystack`, `$needle`, and `$pattern` are in the same order for all functions that take them - - Functions should be consistently named. - - If an operation can conceivably operate on either keys or values, the default is to operate on the values - the version that operates on keys should have `_key` suffix (e.g. `Iter\last`, `Iter\last_key`, `Iter\contains`, `Iter\contains_key` ) - - Find-like operations that can fail should return `?T`; a second function should be added with an `x` suffix that uses an invariant to return `T` (e.g. `Arr\last`, `Arr\lastx`) - - Iterable functions that do an operation based on a user-supplied keying function for each element should be suffixed with `_by` (e.g. `Arr\sort_by`, `Iter\group_by`, `Math\max_by`) +- Functions argument order should be consistent within the library + - All iterable-related functions take the iterable as the first argument ( e.g. `Iter\map` and `Iter\filter` ) + - `$haystack`, `$needle`, and `$pattern` are in the same order for all functions that take them +- Functions should be consistently named. +- If an operation can conceivably operate on either keys or values, the default is to operate on the values - the version that operates on keys should have `_key` suffix (e.g. `Iter\last`, `Iter\last_key`, `Iter\contains`, `Iter\contains_key` ) +- Iterable functions that do an operation based on a user-supplied keying function for each element should be suffixed with `_by` (e.g. `Arr\sort_by`, `Iter\group_by`, `Math\max_by`) ## Sponsors Thanks to our sponsors and supporters: - | JetBrains | |---| | | - ## License The MIT License (MIT). Please see [`LICENSE`](./LICENSE) for more information. diff --git a/composer.json b/composer.json index c7057b2..92789cc 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,8 @@ "friendsofphp/php-cs-fixer": "^2.18", "roave/security-advisories": "dev-master", "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "dev-master" + "vimeo/psalm": "dev-master", + "php-standard-library/psalm-plugin": "^1.0" }, "autoload": { "psr-4": { @@ -71,4 +72,4 @@ "url": "https://github.com/hhvm/hsl" } } -} +} \ No newline at end of file diff --git a/integration/Psalm/Plugin.php b/integration/Psalm/Plugin.php index dec5a36..b8030a9 100644 --- a/integration/Psalm/Plugin.php +++ b/integration/Psalm/Plugin.php @@ -8,6 +8,11 @@ use Psalm\Plugin\PluginEntryPointInterface; use Psalm\Plugin\RegistrationInterface; use SimpleXMLElement; +/** + * @deprecated use `php-standard-library/psalm-plugin` package instead. + * + * @see https://github.com/php-standard-library/psalm-plugin + */ final class Plugin implements PluginEntryPointInterface { public function __invoke(RegistrationInterface $registration, ?SimpleXMLElement $config = null): void