phpstan/phpstan-webmozart-assert

PHPStan webmozart/assert extension

Maintainers

👁 ondrejmirtes

Package info

github.com/phpstan/phpstan-webmozart-assert

Type:phpstan-extension

pkg:composer/phpstan/phpstan-webmozart-assert

Statistics

Installs: 26 882 822

Dependents: 962

Suggesters: 1

Stars: 184

Open Issues: 8

2.0.0 2024-10-14 03:45 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 0c641817d2a8f05c7157f92d91986e74d3c8ab0c


README

👁 Build
👁 Latest Stable Version
👁 License

Description

The main scope of this extension is to help PHPStan to detect the type of object after the Webmozart\Assert\Assert validation.

<?php declare(strict_types = 1);

use Webmozart\Assert\Assert;

function demo(?int $a) {
	// ...

	Assert::integer($a);
	// PHPStan is now aware that $a can no longer be `null` at this point

	return ($a === 10);
}

Supported assertions

This extension understands the following Assert::* methods and narrows types accordingly.

All assertions also work with the nullOr*(), all*(), and allNullOr*() prefixes (e.g. Assert::nullOrString(), Assert::allInteger(), Assert::allNullOrNotEmpty()).

Type checks

integer, positiveInteger, natural, float, numeric, integerish, boolean, scalar, string, stringNotEmpty, object, resource, isCallable, isArray, isIterable, isTraversable, isList, isNonEmptyList, isMap, isNonEmptyMap, isCountable, isArrayAccessible

Instance and class checks

isInstanceOf, isInstanceOfAny, notInstanceOf, isAOf, isAnyOf, isNotA, subclassOf, implementsInterface, classExists, interfaceExists

Comparison

same, notSame, eq, notEq, greaterThan, greaterThanEq, lessThan, lessThanEq, range, true, false, null, notNull, notFalse, inArray, oneOf

String assertions

contains, startsWith, endsWith, startsWithLetter, unicodeLetters, alpha, digits, alnum, lower, upper, uuid, ip, ipv4, ipv6, email, notWhitespaceOnly, length, minLength, maxLength, lengthBetween

Count assertions

count, minCount, maxCount, countBetween

Object and array

keyExists, keyNotExists, validArrayKey, methodExists, propertyExists

Negative all* assertions

allNotNull, allNotInstanceOf, allNotSame

Installation

To use this extension, require it in Composer:

composer require --dev phpstan/phpstan-webmozart-assert

If you also install phpstan/extension-installer then you're all set!