Описание тега psalm-php

2 ответа

Как использовать функцию UnusedMethod Псалма?

Я пытаюсь использовать инструмент статического анализа псалма для PHP. Насколько я понимаю, этот инструмент может рассказать мне о неиспользуемых методах в моей кодовой базе. Тем не менее, если я создаю простой тестовый файл #File: src/test.php <…
30 апр '19 в 15:42
0 ответов

Как решить эту ошибку TypeDoesNotContainType?

Это мой код: $sftp = ssh2_sftp($connection); if ($sftp === false) { Это ошибка псалма: ERROR: TypeDoesNotContainType - src/MyFile.php:159:13 - resource does not contain false if ($sftp === false) { ..но руководство по PHP говорит ssh2_sftp может вер…
17 июн '19 в 18:35
3 ответа

Как набрать цикл, который перебирает массив смешанных

Учитывая этот код ( https://psalm.dev/r/156e52eb66): <?php function keys(): array { return ['foo', 'bar']; } // no lines above can be changed foreach (keys() as $k) { echo gettype($k); } как можно было бы напечатать это при условии keys функция н…
16 авг '19 в 07:58
1 ответ

Псалом поддерживает @param-out для "this"?

Можно ли управлять фантомными типами в Псалме с помощью @param-out за this или self? Пример: /** * @template T */ class Foo { /** * @param T $t */ public function __construct($t) { $this->t = $t; } /** * WRONG: * @param-out Test<S> $this */…
17 июн '20 в 20:41
2 ответа

Псалом: метод Handle, возвращающий несколько типов

ИЗМЕНИТЬ Это псалом, а не PHP MD. Я пишу консольную команду Symfony. В своемexecute метод я получаю аргумент с $input->getArgument('argument_name')метод. И я передаю это значение службе, которая ожидает, что это значение будет строкового типа. Об…
31 янв '20 в 13:06
1 ответ

Как создать тип пересечения массивов

Упрощение того, что я пытаюсь реализовать, заключается в следующем: <?php /** * @psalm-type Foo=array{foo: string} * @psalm-type Bar=array{bar: int} */ /** * @param Foo&Bar $v */ function acceptFooAndBar(array $v): void { echo sprintf('%s %d'…
08 апр '20 в 01:59
1 ответ

Проблема с ошибкой phpStan: __toString() должен возвращать строку, но возвращает строку |false

Моя функция __toString: public function __toString(): string { return json_encode($this->payload); } Это ошибка, которую я получаю от PhpStan, не позволяя мне совершить фиксацию: Метод App\DTO\GenericMessageDTO::__toString() должен возвращать стр…
28 фев '20 в 18:55
1 ответ

Ошибка псалма для вызываемого параметра TwigFilter

Я получаю эту ошибку из псалма для расширения веточки: ОШИБКА: InvalidArgument - src/Twig/CartExtension.php:44:17 - Аргумент 2 конструкции Twig\TwigFilter::__ ожидает вызываемый |null, предоставлен массив {App\Twig\CartExtension&static;, string(getO…
27 май '20 в 16:27
0 ответов

Как заставить Psalm выводить 100% кодовой базы в PHP

В настоящее время запущенный Псалом дает мне: Psalm смог определить типы для 94,8665% кодовой базы. Как отлаживать, если не удалось определить тип? Я бы хотел иметь 100% типографское покрытие. Вот мой psalm.xml.dist config: <?xml version="1.…
14 авг '20 в 13:46
0 ответов

Как утверждать, что метод вернет обратный вызов, который вернет определенный массив с Псалмом?

Представьте себе интерфейс: interface ObjectConverter { public function getResultCallback(): callable; } Ожидается, что реализации этого интерфейса вернут функцию, которая всегда должна возвращать один и тот же результат - набор array[Customer, stri…
25 июн '20 в 17:16
0 ответов

Использование псалма в файлах .phtml

Я пытаюсь заставить псалом работать .phtmlфайлы. Все идет хорошо, кроме одного. Все классы (которые должны быть загружены автоматически) не определены. В обычных классах php они загружаются псалом. Следующее дает UndefinedDocblockClass за CustomBloc…
10 сен '20 в 01:34
1 ответ

PSALM: класс или интерфейс, определенный в Docblock, не существует

У меня такой код: namespace Some\Space\Utility; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; /** * @psalm-template T */ class SomeAdapter { /** * Some method * * @psalm-param iterable<int, T> $da…
23 окт '20 в 14:31
1 ответ

Как написать дженерики для фабрик с помощью psalm и phpstan

Я пробую phpstan и psalm для php, и я хотел бы написать класс, который может принимать разные типы объектов и возвращать правильный на основе вызываемой фабрики. Я пытаюсь добиться того, чтобы, если я передаю объект типа A в Transformer, компилятор …
14 сен '20 в 09:48
0 ответов

Как линтовать пространство имен на основе имени папки?

Я знаю PHP CS Fixer и Psalm для линтинга PHP. Я использовал их оба. Но я не могу найти способ связать / проверить мое имя пространства имен на основе папки. Например, в папке Tests/Controllers/V1, Я имею MyControllerTest.php, и он имеет следующие ко…
03 окт '20 в 13:46
2 ответа

Псалом, возможно, нулевое значение, предоставленное с помощью request-> get()

У меня такой код: $request->headers->get('Accept-Language', 'en'); Я предоставляю значение по умолчанию, но Псалом считает его потенциально нулевым, поскольку ->get() объявляет, что возвращает строку, допускающую значение NULL: // vendor/sy…
23 ноя '20 в 12:00
0 ответов

Проверка "PropertyNotSetInConstructor" пользовательской функции с помощью Psalm

Есть ли способ сказать Псалом чтобы он проверял другие функции, кроме __construct() методы, обеспечивающие установку всех свойств при создании экземпляра класса? В некоторой библиотеке PHP Psalm жалуется на PropertyNotSetInConstructorпотому что он н…
03 ноя '20 в 20:45
1 ответ

Псалом сообщает InvalidArrayOffset, но значение будет в допустимых пределах

Запуск Псалма на этом простом генераторе "случайных строк": $letters = 'abcdefghjklmnpqrstuvwxyz'; $numbers = '23456789'; $number_count = \strlen($numbers); $letter_count = \strlen($letters); $pass = ''; while (\strlen($pass) < 9) { $pass .= $let…
22 мар '21 в 15:38
1 ответ

Аннотация к псалму для разнотипного шаблона

Мне нужно создать черту (или класс, если на то пошло), на основе которого я могу шаблонировать несколько типов; Я пробовал что-то вроде следующего (также описывающее проблему; контекст автомобиля предназначен только для иллюстрации проблемы, я знаю,…
05 янв '21 в 12:32
1 ответ

Псалом: как обрабатывать специальные файлы просмотра?

Моя установка включает lib папка с классами и viewпапка с файлами PHP, которые производят вывод. Представления импортируются внутри View класс, подобный этому: class View { public function render(string $basename, Array $params) : string { extract($…
0 ответов

Псалом говорит, что отсутствует файл, который завершается - PhpStorm

Псалом говорит мне: psalm: MissingFile: Cannot find file C:\xampp\htdocs\config\domain.php правильный путь: C:\xampp\htdocs\projectname\config\domain.php Я изменил это (файл находится внутри projectname каталог), и ошибка была исправлена, но теперь …
05 май '21 в 08:17