The main scope of this extension is to help phpstan to detect the type of object after the Webmozart\Assert validation.
<?php declare(strict_types = 1);
use Webmozart\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);
}This extension specifies types of values passed to:
Assert::integerAssert::positiveIntegerAssert::stringAssert::stringNotEmptyAssert::floatAssert::numericAssert::naturalAssert::integerishAssert::booleanAssert::scalarAssert::objectAssert::resourceAssert::isCallableAssert::isArrayAssert::isIterableAssert::isCountableAssert::isInstanceOfAssert::notInstanceOfAssert::subclassOfAssert::trueAssert::falseAssert::notFalseAssert::nullAssert::notNullAssert::sameAssert::notSameAssert::implementsInterfaceAssert::classExistsAssert::interfaceExistsAssert::keyExistsAssert::keyNotExistsAssert::validArrayKeyAssert::countAssert::minCountAssert::maxCountAssert::countBetweenAssert::inArrayAssert::oneOfAssert::methodExistsAssert::propertyExistsAssert::isArrayAccessibleAssert::containsAssert::startsWithAssert::startsWithLetterAssert::endsWithAssert::unicodeLettersAssert::alphaAssert::digitsAssert::alnumAssert::lowerAssert::upperAssert::lengthAssert::minLengthAssert::maxLengthAssert::lengthBetweenAssert::uuidAssert::ipAssert::ipv4Assert::ipv6Assert::emailAssert::notWhitespaceOnlynullOr*andall*variants of the above methods
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!
Manual installation
If you don't want to use phpstan/extension-installer, include extension.neon in your project's PHPStan config:
includes:
- vendor/phpstan/phpstan-webmozart-assert/extension.neon