Download the PHP package gian-tiaga/phpstan-strict-rules without Composer

On this page you can find all versions of the php package gian-tiaga/phpstan-strict-rules. 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 phpstan-strict-rules

PHPStan Strict Rules

gian-tiaga/phpstan-strict-rules — набор строгих PHPStan-правил для PHP-кода.

Сообщения правил остаются на английском языке. Это developer-инструмент, а не пользовательский интерфейс приложения.

Установка

Подключите extension в phpstan.neon:

Настраиваются интерфейс разрешённой массовой записи, имена атрибутов доступа к маршруту и интерфейс интеграционного события.

Правила

declare(strict_types=1)

Каждый анализируемый PHP-файл должен начинаться с declare(strict_types=1).

Идентификатор:

Запрещено:

Разрешено:

Именованные аргументы

Если в вызове два или больше обычных аргумента, они должны быть именованными.

Идентификатор:

Запрещено:

Разрешено:

Один позиционный аргумент разрешён. Вызовы PHPUnit assertions не проверяются этим правилом, потому что PHPUnit запрещает named arguments для своих assert-методов.

Строгие сравнения

Loose comparison запрещён.

Идентификаторы:

Запрещено:

Разрешено:

Точные PHPDoc-типы

PHPDoc-контракты не должны содержать неявный mixed, вложенные массивы и array shape.

Идентификаторы:

Запрещено:

Разрешено:

Если данные сложные, лучше вынести их в DTO или именованную коллекцию, а не описывать многоуровневым массивом.

Set-based запись

insert(), update() и delete() на Cycle\Database\DatabaseInterface запрещены везде, кроме классов, реализующих интерфейс-маркер санкционированной записи. Обычное изменение состояния идёт через сущность и EntityManager, поэтому массовая запись остаётся узкой осознанной дверью. EntityManager::delete($entity) под правило не попадает: у него другой тип получателя.

Идентификатор:

Запрещено:

Разрешено:

Параметр setBasedWriteMarkerInterface

Имя интерфейса-маркера задаётся параметром конфигурации: пакет правил не знает классов конкретного приложения, поэтому свой маркер объявляет каждый проект и каждый пакет.

Значение по умолчанию — пустая строка. Она не освобождает ни один класс: пока маркер не задан, set-based запись запрещена везде, и сообщение правила называет сам параметр. Так забытая настройка проверку не ослабляет.

Маркер должен быть автозагружаемым интерфейсом: правило проверяет его через рефлексию, а не по тексту.

Объявление доступа к маршруту

Метод с атрибутом Spiral Route обязан иметь ровно один атрибут из списка routeAccessAttributeClasses. Методы без Route правило не проверяет.

Идентификатор:

Список по умолчанию пуст, и тогда правило отключено. Пакет не знает атрибуты приложения и получает их только из его конфигурации.

Форма интеграционного события

Класс, реализующий интерфейс интеграционного события, обязан собираться обратно из своей полезной нагрузки. Правило рекурсивно обходит свойства самого события и свойства вложенных объектов и требует, чтобы у каждого свойства был одноимённый параметр конструктора, а его тип был описан.

Допустимы string, int, float, bool, null, backed enum, DateTimeImmutable, вложенный объект по тем же правилам, list<T> и array<string, T> с указанным T. Видимость свойства не ограничена; статическое свойство полем события не является.

Идентификаторы:

Запрещено:

Разрешено:

Параметр integrationEventInterface

Имя интерфейса события задаётся параметром конфигурации: пакет правил не знает классов конкретного приложения.

Значение по умолчанию — пустая строка: пока интерфейс не задан, правило не проверяет ни один класс. Интерфейс должен быть автозагружаемым — правило работает через рефлексию, а не по тексту.

Локальная разработка

Если пакет подключён через path repository и вы меняете сами правила, иногда нужно очистить кеш PHPStan:


All versions of phpstan-strict-rules with dependencies

PHP Build Version
Package Version
Requires php Version >=8.5
phpstan/phpstan Version ^2.1.54
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 gian-tiaga/phpstan-strict-rules contains the following files

Loading the files please wait ...