diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 3fc5ac7..a206ee2 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1,826 +1,943 @@ parameters: ignoreErrors: - - message: "#^Method ipl\\\\Orm\\\\AliasedExpression\\:\\:__construct\\(\\) has parameter \\$columns with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\AliasedExpression\:\:__construct\(\) has parameter \$columns with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/AliasedExpression.php - - message: "#^Cannot cast mixed to string\\.$#" + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string count: 1 path: src/Behavior/Binary.php - - message: "#^Parameter \\#1 \\$string of function bin2hex expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$string of function bin2hex expects string, mixed given\.$#' + identifier: argument.type count: 1 path: src/Behavior/Binary.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: src/Behavior/Binary.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: src/Behavior/BoolCast.php - - message: "#^Parameter \\#3 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#3 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: src/Behavior/BoolCast.php - - message: "#^Parameter \\#4 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#4 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: src/Behavior/BoolCast.php - - message: "#^Cannot call method setTimezone\\(\\) on DateTime\\|false\\.$#" + message: '#^Cannot call method setTimezone\(\) on DateTime\|false\.$#' + identifier: method.nonObject count: 1 path: src/Behavior/MillisecondTimestamp.php - - message: "#^Parameter \\#1 \\$datetime of class DateTime constructor expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' + identifier: argument.type count: 1 path: src/Behavior/MillisecondTimestamp.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#" + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type count: 1 path: src/Behavior/MillisecondTimestamp.php - - message: "#^Class ipl\\\\Orm\\\\Behaviors implements generic interface IteratorAggregate but does not specify its types\\: TKey, TValue$#" + message: '#^Class ipl\\Orm\\Behaviors implements generic interface IteratorAggregate but does not specify its types\: TKey, TValue$#' + identifier: missingType.generics count: 1 path: src/Behaviors.php - - message: "#^Method ipl\\\\Orm\\\\Behaviors\\:\\:add\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Behaviors\:\:add\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Behaviors.php - - message: "#^Method ipl\\\\Orm\\\\Behaviors\\:\\:getIterator\\(\\) return type with generic class ArrayIterator does not specify its types\\: TKey, TValue$#" + message: '#^Method ipl\\Orm\\Behaviors\:\:getIterator\(\) return type with generic class ArrayIterator does not specify its types\: TKey, TValue$#' + identifier: missingType.generics count: 1 path: src/Behaviors.php - - message: "#^Method ipl\\\\Orm\\\\Behaviors\\:\\:persist\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Behaviors\:\:persist\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Behaviors.php - - message: "#^Method ipl\\\\Orm\\\\Behaviors\\:\\:retrieve\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Behaviors\:\:retrieve\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Behaviors.php - - message: "#^Parameter \\#1 \\$condition of method ipl\\\\Orm\\\\Contract\\\\RewriteFilterBehavior\\:\\:rewriteCondition\\(\\) expects ipl\\\\Stdlib\\\\Filter\\\\Condition, ipl\\\\Stdlib\\\\Filter\\\\Rule given\\.$#" + message: '#^Parameter \#1 \$condition of method ipl\\Orm\\Contract\\RewriteFilterBehavior\:\:rewriteCondition\(\) expects ipl\\Stdlib\\Filter\\Condition, ipl\\Stdlib\\Filter\\Rule given\.$#' + identifier: argument.type count: 1 path: src/Behaviors.php - - message: "#^Property ipl\\\\Orm\\\\Behaviors\\:\\:\\$behaviors type has no value type specified in iterable type array\\.$#" + message: '#^Property ipl\\Orm\\Behaviors\:\:\$behaviors type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Behaviors.php - - message: "#^Method ipl\\\\Orm\\\\ColumnDefinition\\:\\:fromArray\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\ColumnDefinition\:\:fromArray\(\) has parameter \$options with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/ColumnDefinition.php - - message: "#^Method ipl\\\\Orm\\\\Common\\\\SortUtil\\:\\:createOrderBy\\(\\) has parameter \\$sort with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Common\\SortUtil\:\:createOrderBy\(\) has parameter \$sort with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Common/SortUtil.php - - message: "#^Method ipl\\\\Orm\\\\Common\\\\SortUtil\\:\\:explodeSortSpec\\(\\) has parameter \\$sort with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Common\\SortUtil\:\:explodeSortSpec\(\) has parameter \$sort with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Common/SortUtil.php - - message: "#^Method ipl\\\\Orm\\\\Common\\\\SortUtil\\:\\:explodeSortSpec\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Common\\SortUtil\:\:explodeSortSpec\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Common/SortUtil.php - - message: "#^Method ipl\\\\Orm\\\\Common\\\\SortUtil\\:\\:normalizeSortSpec\\(\\) has parameter \\$sort with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Common\\SortUtil\:\:normalizeSortSpec\(\) has parameter \$sort with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Common/SortUtil.php - - message: "#^Method ipl\\\\Orm\\\\Common\\\\SortUtil\\:\\:splitColumnAndDirection\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Common\\SortUtil\:\:splitColumnAndDirection\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Common/SortUtil.php - - message: "#^Cannot use array destructuring on array\\\\|false\\.$#" + message: '#^Method ipl\\Orm\\Compat\\FilterProcessor\:\:apply\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Compat/FilterProcessor.php - - message: "#^Method ipl\\\\Orm\\\\Compat\\\\FilterProcessor\\:\\:apply\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Compat\\FilterProcessor\:\:requireAndResolveFilterColumns\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Compat/FilterProcessor.php - - message: "#^Method ipl\\\\Orm\\\\Compat\\\\FilterProcessor\\:\\:requireAndResolveFilterColumns\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Compat\\FilterProcessor\:\:requireAndResolveFilterColumns\(\) has parameter \$forceOptimization with no type specified\.$#' + identifier: missingType.parameter count: 1 path: src/Compat/FilterProcessor.php - - message: "#^Method ipl\\\\Orm\\\\Compat\\\\FilterProcessor\\:\\:requireAndResolveFilterColumns\\(\\) has parameter \\$forceOptimization with no type specified\\.$#" + message: '#^Parameter \#1 \$filter of method ipl\\Orm\\Query\:\:filter\(\) expects ipl\\Stdlib\\Filter\\Rule, ipl\\Stdlib\\Filter\\Chain\|null given\.$#' + identifier: argument.type count: 1 path: src/Compat/FilterProcessor.php - - message: "#^Parameter \\#1 \\$filter of method ipl\\\\Orm\\\\Query\\:\\:filter\\(\\) expects ipl\\\\Stdlib\\\\Filter\\\\Rule, ipl\\\\Stdlib\\\\Filter\\\\Chain\\|null given\\.$#" + message: '#^Parameter \#1 \$path of method ipl\\Orm\\Resolver\:\:isDistinctRelation\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: src/Compat/FilterProcessor.php - - message: "#^Parameter \\#1 \\$path of method ipl\\\\Orm\\\\Resolver\\:\\:isDistinctRelation\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$path of method ipl\\Orm\\Resolver\:\:qualifyPath\(\) expects string, mixed given\.$#' + identifier: argument.type count: 1 path: src/Compat/FilterProcessor.php - - message: "#^Parameter \\#1 \\$path of method ipl\\\\Orm\\\\Resolver\\:\\:qualifyPath\\(\\) expects string, mixed given\\.$#" + message: '#^Parameter \#1 \$subject of method ipl\\Orm\\Resolver\:\:hasSelectableColumn\(\) expects ipl\\Orm\\Model, ipl\\Orm\\Model\|null given\.$#' + identifier: argument.type count: 1 path: src/Compat/FilterProcessor.php - - message: "#^Parameter \\#1 \\$path of method ipl\\\\Orm\\\\Resolver\\:\\:resolveRelation\\(\\) expects string, int\\|string given\\.$#" + message: '#^Parameter \#2 \$model of class ipl\\Orm\\Exception\\InvalidColumnException constructor expects ipl\\Orm\\Model, ipl\\Orm\\Model\|null given\.$#' + identifier: argument.type count: 1 path: src/Compat/FilterProcessor.php - - message: "#^Parameter \\#1 \\$subject of method ipl\\\\Orm\\\\Resolver\\:\\:hasSelectableColumn\\(\\) expects ipl\\\\Orm\\\\Model, ipl\\\\Orm\\\\Model\\|null given\\.$#" + message: '#^Parameter \#2 \$value of static method ipl\\Stdlib\\Filter\:\:like\(\) expects array\\|string, mixed given\.$#' + identifier: argument.type count: 1 path: src/Compat/FilterProcessor.php - - message: "#^Parameter \\#2 \\$model of class ipl\\\\Orm\\\\Exception\\\\InvalidColumnException constructor expects ipl\\\\Orm\\\\Model, ipl\\\\Orm\\\\Model\\|null given\\.$#" + message: '#^Property ipl\\Orm\\Compat\\FilterProcessor\:\:\$baseJoins has no type specified\.$#' + identifier: missingType.property count: 1 path: src/Compat/FilterProcessor.php - - message: "#^Parameter \\#2 \\$targetPath of method ipl\\\\Orm\\\\Query\\:\\:createSubQuery\\(\\) expects string, int\\|string given\\.$#" + message: '#^Property ipl\\Orm\\Compat\\FilterProcessor\:\:\$madeJoins has no type specified\.$#' + identifier: missingType.property count: 1 path: src/Compat/FilterProcessor.php - - message: "#^Parameter \\#2 \\$value of static method ipl\\\\Stdlib\\\\Filter\\:\\:equal\\(\\) expects array\\|bool\\|float\\|int\\|string, mixed given\\.$#" - count: 1 - path: src/Compat/FilterProcessor.php - - - - message: "#^Parameter \\#2 \\$value of static method ipl\\\\Stdlib\\\\Filter\\:\\:like\\(\\) expects array\\\\|string, mixed given\\.$#" - count: 1 - path: src/Compat/FilterProcessor.php - - - - message: "#^Property ipl\\\\Orm\\\\Compat\\\\FilterProcessor\\:\\:\\$baseJoins has no type specified\\.$#" - count: 1 - path: src/Compat/FilterProcessor.php - - - - message: "#^Property ipl\\\\Orm\\\\Compat\\\\FilterProcessor\\:\\:\\$madeJoins has no type specified\\.$#" - count: 1 - path: src/Compat/FilterProcessor.php - - - - message: "#^Method ipl\\\\Orm\\\\Contract\\\\PersistBehavior\\:\\:persist\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Contract\\PersistBehavior\:\:persist\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Contract/PersistBehavior.php - - message: "#^Method ipl\\\\Orm\\\\Contract\\\\PropertyBehavior\\:\\:__construct\\(\\) has parameter \\$properties with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Contract\\PropertyBehavior\:\:__construct\(\) has parameter \$properties with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Contract/PropertyBehavior.php - - message: "#^Method ipl\\\\Orm\\\\Contract\\\\PropertyBehavior\\:\\:persist\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Contract\\PropertyBehavior\:\:persist\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Contract/PropertyBehavior.php - - message: "#^Method ipl\\\\Orm\\\\Contract\\\\PropertyBehavior\\:\\:retrieve\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Contract\\PropertyBehavior\:\:retrieve\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Contract/PropertyBehavior.php - - message: "#^Property ipl\\\\Orm\\\\Contract\\\\PropertyBehavior\\:\\:\\$properties type has no value type specified in iterable type array\\.$#" + message: '#^Property ipl\\Orm\\Contract\\PropertyBehavior\:\:\$properties type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Contract/PropertyBehavior.php - - message: "#^Method ipl\\\\Orm\\\\Contract\\\\RetrieveBehavior\\:\\:retrieve\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Contract\\RetrieveBehavior\:\:retrieve\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Contract/RetrieveBehavior.php - - message: "#^Class ipl\\\\Orm\\\\Defaults implements generic interface IteratorAggregate but does not specify its types\\: TKey, TValue$#" + message: '#^Class ipl\\Orm\\Defaults implements generic interface IteratorAggregate but does not specify its types\: TKey, TValue$#' + identifier: missingType.generics count: 1 path: src/Defaults.php - - message: "#^Method ipl\\\\Orm\\\\Defaults\\:\\:add\\(\\) return type has no value type specified in iterable type \\$this\\(ipl\\\\Orm\\\\Defaults\\)\\.$#" + message: '#^Method ipl\\Orm\\Defaults\:\:add\(\) return type has no value type specified in iterable type \$this\(ipl\\Orm\\Defaults\)\.$#' + identifier: missingType.iterableValue count: 1 path: src/Defaults.php - - message: "#^Method ipl\\\\Orm\\\\Defaults\\:\\:getIterator\\(\\) return type has no value type specified in iterable type Traversable\\.$#" + message: '#^Method ipl\\Orm\\Defaults\:\:getIterator\(\) return type has no value type specified in iterable type Traversable\.$#' + identifier: missingType.iterableValue count: 1 path: src/Defaults.php - - message: "#^Property ipl\\\\Orm\\\\Exception\\\\InvalidRelationException\\:\\:\\$model \\(ipl\\\\Orm\\\\Model\\) does not accept ipl\\\\Orm\\\\Model\\|null\\.$#" + message: '#^Property ipl\\Orm\\Exception\\InvalidRelationException\:\:\$model \(ipl\\Orm\\Model\) does not accept ipl\\Orm\\Model\|null\.$#' + identifier: assign.propertyType count: 1 path: src/Exception/InvalidRelationException.php - - message: "#^Cannot call method getName\\(\\) on mixed\\.$#" + message: '#^Cannot call method getName\(\) on mixed\.$#' + identifier: method.nonObject count: 1 path: src/Hydrator.php - - message: "#^Method ipl\\\\Orm\\\\Hydrator\\:\\:extractAndMap\\(\\) has parameter \\$columnToPropertyMap with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Hydrator\:\:extractAndMap\(\) has parameter \$columnToPropertyMap with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Hydrator.php - - message: "#^Method ipl\\\\Orm\\\\Hydrator\\:\\:extractAndMap\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Hydrator\:\:extractAndMap\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Hydrator.php - - message: "#^Method ipl\\\\Orm\\\\Hydrator\\:\\:extractAndMap\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Hydrator\:\:extractAndMap\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Hydrator.php - - message: "#^Method ipl\\\\Orm\\\\Hydrator\\:\\:hydrate\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Hydrator\:\:hydrate\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Hydrator.php - - message: "#^Property ipl\\\\Orm\\\\Hydrator\\:\\:\\$hydrators type has no value type specified in iterable type array\\.$#" + message: '#^Property ipl\\Orm\\Hydrator\:\:\$hydrators type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Hydrator.php - - message: "#^Class ipl\\\\Orm\\\\Model implements generic interface ArrayAccess but does not specify its types\\: TKey, TValue$#" + message: '#^Class ipl\\Orm\\Model implements generic interface ArrayAccess but does not specify its types\: TKey, TValue$#' + identifier: missingType.generics count: 1 path: src/Model.php - - message: "#^Class ipl\\\\Orm\\\\Model implements generic interface IteratorAggregate but does not specify its types\\: TKey, TValue$#" + message: '#^Class ipl\\Orm\\Model implements generic interface IteratorAggregate but does not specify its types\: TKey, TValue$#' + identifier: missingType.generics count: 1 path: src/Model.php - - message: "#^Method ipl\\\\Orm\\\\Model\\:\\:__construct\\(\\) has parameter \\$properties with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Model\:\:__construct\(\) has parameter \$properties with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Model.php - - message: "#^Method ipl\\\\Orm\\\\Model\\:\\:createBehaviors\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Model\:\:createBehaviors\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Model.php - - message: "#^Method ipl\\\\Orm\\\\Model\\:\\:createDefaults\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Model\:\:createDefaults\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Model.php - - message: "#^Method ipl\\\\Orm\\\\Model\\:\\:createDefaults\\(\\) has parameter \\$defaults with no value type specified in iterable type ipl\\\\Orm\\\\Defaults\\.$#" + message: '#^Method ipl\\Orm\\Model\:\:createDefaults\(\) has parameter \$defaults with no value type specified in iterable type ipl\\Orm\\Defaults\.$#' + identifier: missingType.iterableValue count: 1 path: src/Model.php - - message: "#^Method ipl\\\\Orm\\\\Model\\:\\:createRelations\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Model\:\:createRelations\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Model.php - - message: "#^Method ipl\\\\Orm\\\\Model\\:\\:getColumnDefinitions\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Model\:\:getColumnDefinitions\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Model.php - - message: "#^Method ipl\\\\Orm\\\\Model\\:\\:getDefaultSort\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Model\:\:getDefaultSort\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Model.php - - message: "#^Method ipl\\\\Orm\\\\Model\\:\\:getProperty\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Model\:\:getProperty\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Model.php - - message: "#^Method ipl\\\\Orm\\\\Model\\:\\:getProperty\\(\\) has parameter \\$key with no type specified\\.$#" + message: '#^Method ipl\\Orm\\Model\:\:getProperty\(\) has parameter \$key with no type specified\.$#' + identifier: missingType.parameter count: 1 path: src/Model.php - - message: "#^Method ipl\\\\Orm\\\\Model\\:\\:getSearchColumns\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Model\:\:getSearchColumns\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Model.php - - message: "#^Method ipl\\\\Orm\\\\Model\\:\\:init\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Model\:\:init\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Model.php - - message: "#^Parameter \\#1 \\$properties of method ipl\\\\Orm\\\\Model\\:\\:setProperties\\(\\) expects array, array\\|null given\\.$#" + message: '#^Parameter \#1 \$properties of method ipl\\Orm\\Model\:\:setProperties\(\) expects array, array\|null given\.$#' + identifier: argument.type count: 1 path: src/Model.php - - message: "#^Cannot access an offset on mixed\\.$#" + message: '#^Cannot access an offset on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 1 path: src/Query.php - - message: "#^Cannot access offset mixed on mixed\\.$#" + message: '#^Cannot access offset mixed on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 1 path: src/Query.php - - message: "#^Cannot call method getArrayCopy\\(\\) on mixed\\.$#" + message: '#^Cannot call method getArrayCopy\(\) on mixed\.$#' + identifier: method.nonObject count: 2 path: src/Query.php - - message: "#^Cannot call method getJoinType\\(\\) on mixed\\.$#" + message: '#^Cannot call method getJoinType\(\) on mixed\.$#' + identifier: method.nonObject count: 1 path: src/Query.php - - message: "#^Cannot call method resolve\\(\\) on mixed\\.$#" + message: '#^Cannot call method resolve\(\) on mixed\.$#' + identifier: method.nonObject count: 1 path: src/Query.php - - message: "#^Class ipl\\\\Orm\\\\Query implements generic interface IteratorAggregate but does not specify its types\\: TKey, TValue$#" + message: '#^Class ipl\\Orm\\Query implements generic interface IteratorAggregate but does not specify its types\: TKey, TValue$#' + identifier: missingType.generics count: 1 path: src/Query.php - - message: "#^Method ipl\\\\Orm\\\\Query\\:\\:columns\\(\\) has parameter \\$columns with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Query\:\:columns\(\) has parameter \$columns with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Query.php - - message: "#^Method ipl\\\\Orm\\\\Query\\:\\:count\\(\\) should return int but returns int\\|string\\|false\\|null\\.$#" + message: '#^Method ipl\\Orm\\Query\:\:dump\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Query.php - - message: "#^Method ipl\\\\Orm\\\\Query\\:\\:dump\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Query\:\:first\(\) should return ipl\\Orm\\Model\|null but returns mixed\.$#' + identifier: return.type count: 1 path: src/Query.php - - message: "#^Method ipl\\\\Orm\\\\Query\\:\\:first\\(\\) should return ipl\\\\Orm\\\\Model\\|null but returns mixed\\.$#" + message: '#^Method ipl\\Orm\\Query\:\:getColumns\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Query.php - - message: "#^Method ipl\\\\Orm\\\\Query\\:\\:getColumns\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Query\:\:groupColumnsByTarget\(\) return type with generic class SplObjectStorage does not specify its types\: TObject, TData$#' + identifier: missingType.generics count: 1 path: src/Query.php - - message: "#^Method ipl\\\\Orm\\\\Query\\:\\:groupColumnsByTarget\\(\\) return type with generic class SplObjectStorage does not specify its types\\: TObject, TData$#" + message: '#^Method ipl\\Orm\\Query\:\:with\(\) has parameter \$relations with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Query.php - - message: "#^Method ipl\\\\Orm\\\\Query\\:\\:with\\(\\) has parameter \\$relations with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Query\:\:withColumns\(\) has parameter \$columns with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Query.php - - message: "#^Method ipl\\\\Orm\\\\Query\\:\\:withColumns\\(\\) has parameter \\$columns with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Query\:\:without\(\) has parameter \$relations with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Query.php - - message: "#^Method ipl\\\\Orm\\\\Query\\:\\:without\\(\\) has parameter \\$relations with no value type specified in iterable type array\\.$#" + message: '#^Parameter \#1 \$model of method ipl\\Orm\\Resolver\:\:getAlias\(\) expects ipl\\Orm\\Model, mixed given\.$#' + identifier: argument.type count: 1 path: src/Query.php - - message: "#^Parameter \\#1 \\$model of method ipl\\\\Orm\\\\Resolver\\:\\:getAlias\\(\\) expects ipl\\\\Orm\\\\Model, mixed given\\.$#" + message: '#^Parameter \#1 \$objectOrClass of class ReflectionClass constructor expects class\-string\\|T of object, string given\.$#' + identifier: argument.type count: 1 path: src/Query.php - - message: "#^Parameter \\#1 \\$object of method SplObjectStorage\\\\:\\:attach\\(\\) expects object, mixed given\\.$#" + message: '#^Parameter \#1 \$subject of method ipl\\Orm\\Resolver\:\:getSelectColumns\(\) expects ipl\\Orm\\Model, mixed given\.$#' + identifier: argument.type count: 1 path: src/Query.php - - message: "#^Parameter \\#1 \\$object of method SplObjectStorage\\\\:\\:contains\\(\\) expects object, mixed given\\.$#" + message: '#^Parameter \#2 \$model of method ipl\\Orm\\Resolver\:\:qualifyColumns\(\) expects ipl\\Orm\\Model\|null, object given\.$#' + identifier: argument.type count: 1 path: src/Query.php - - message: "#^Parameter \\#1 \\$objectOrClass of class ReflectionClass constructor expects class\\-string\\\\|T of object, string given\\.$#" + message: '#^Parameter \#2 \$model of method ipl\\Orm\\Resolver\:\:qualifyColumnsAndAliases\(\) expects ipl\\Orm\\Model\|null, object given\.$#' + identifier: argument.type count: 1 path: src/Query.php - - message: "#^Parameter \\#1 \\$subject of method ipl\\\\Orm\\\\Resolver\\:\\:getSelectColumns\\(\\) expects ipl\\\\Orm\\\\Model, mixed given\\.$#" + message: '#^Property ipl\\Orm\\Query\:\:\$columns type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Query.php - - message: "#^Parameter \\#2 \\$model of method ipl\\\\Orm\\\\Resolver\\:\\:qualifyColumns\\(\\) expects ipl\\\\Orm\\\\Model\\|null, object given\\.$#" + message: '#^Property ipl\\Orm\\Query\:\:\$count \(int\) does not accept int\|string\|false\|null\.$#' + identifier: assign.propertyType count: 1 path: src/Query.php - - message: "#^Parameter \\#2 \\$model of method ipl\\\\Orm\\\\Resolver\\:\\:qualifyColumnsAndAliases\\(\\) expects ipl\\\\Orm\\\\Model\\|null, object given\\.$#" + message: '#^Property ipl\\Orm\\Query\:\:\$withColumns type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Query.php - - message: "#^Property ipl\\\\Orm\\\\Query\\:\\:\\$columns type has no value type specified in iterable type array\\.$#" + message: '#^Property ipl\\Orm\\Query\:\:\$withoutColumns type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Query.php - - message: "#^Property ipl\\\\Orm\\\\Query\\:\\:\\$count \\(int\\) does not accept int\\|string\\|false\\|null\\.$#" - count: 1 - path: src/Query.php - - - - message: "#^Property ipl\\\\Orm\\\\Query\\:\\:\\$withColumns type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Query.php - - - - message: "#^Property ipl\\\\Orm\\\\Query\\:\\:\\$withoutColumns type has no value type specified in iterable type array\\.$#" - count: 1 - path: src/Query.php - - - - message: "#^Method ipl\\\\Orm\\\\Relation\\:\\:determineKeys\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Relation\:\:determineKeys\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\:\\:getCandidateKey\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Relation\:\:getCandidateKey\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\:\\:getDefaultCandidateKey\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Relation\:\:getDefaultCandidateKey\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\:\\:getDefaultForeignKey\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Relation\:\:getDefaultForeignKey\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\:\\:getForeignKey\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Relation\:\:getForeignKey\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\:\\:getTarget\\(\\) should return ipl\\\\Orm\\\\Model but returns object\\.$#" + message: '#^Method ipl\\Orm\\Relation\:\:getTarget\(\) should return ipl\\Orm\\Model but returns object\.$#' + identifier: return.type count: 1 path: src/Relation.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\:\\:setCandidateKey\\(\\) has parameter \\$candidateKey with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Relation\:\:setCandidateKey\(\) has parameter \$candidateKey with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\:\\:setForeignKey\\(\\) has parameter \\$foreignKey with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Relation\:\:setForeignKey\(\) has parameter \$foreignKey with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation.php - - message: "#^Property ipl\\\\Orm\\\\Relation\\:\\:\\$candidateKey type has no value type specified in iterable type array\\.$#" + message: '#^Property ipl\\Orm\\Relation\:\:\$candidateKey type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation.php - - message: "#^Property ipl\\\\Orm\\\\Relation\\:\\:\\$foreignKey type has no value type specified in iterable type array\\.$#" + message: '#^Property ipl\\Orm\\Relation\:\:\$foreignKey type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation.php - - message: "#^Property ipl\\\\Orm\\\\Relation\\:\\:\\$target \\(ipl\\\\Orm\\\\Model\\) does not accept object\\.$#" + message: '#^Property ipl\\Orm\\Relation\:\:\$target \(ipl\\Orm\\Model\) does not accept object\.$#' + identifier: assign.propertyType count: 1 path: src/Relation.php - - message: "#^Call to an undefined method object\\:\\:setName\\(\\)\\.$#" + message: '#^Call to an undefined method object\:\:setName\(\)\.$#' + identifier: method.notFound count: 2 path: src/Relation/BelongsToMany.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\\\BelongsToMany\\:\\:extractKey\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Relation\\BelongsToMany\:\:extractKey\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Relation/BelongsToMany.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\\\BelongsToMany\\:\\:extractKey\\(\\) has parameter \\$possibleKey with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Relation\\BelongsToMany\:\:extractKey\(\) has parameter \$possibleKey with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation/BelongsToMany.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\\\BelongsToMany\\:\\:getTargetCandidateKey\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Relation\\BelongsToMany\:\:getTargetCandidateKey\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation/BelongsToMany.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\\\BelongsToMany\\:\\:getTargetForeignKey\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Relation\\BelongsToMany\:\:getTargetForeignKey\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation/BelongsToMany.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\\\BelongsToMany\\:\\:getThrough\\(\\) should return ipl\\\\Orm\\\\Model but returns object\\.$#" + message: '#^Method ipl\\Orm\\Relation\\BelongsToMany\:\:getThrough\(\) should return ipl\\Orm\\Model but returns object\.$#' + identifier: return.type count: 1 path: src/Relation/BelongsToMany.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\\\BelongsToMany\\:\\:setTargetCandidateKey\\(\\) has parameter \\$targetCandidateKey with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Relation\\BelongsToMany\:\:setTargetCandidateKey\(\) has parameter \$targetCandidateKey with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation/BelongsToMany.php - - message: "#^Method ipl\\\\Orm\\\\Relation\\\\BelongsToMany\\:\\:setTargetForeignKey\\(\\) has parameter \\$targetForeignKey with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Relation\\BelongsToMany\:\:setTargetForeignKey\(\) has parameter \$targetForeignKey with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation/BelongsToMany.php - - message: "#^Property ipl\\\\Orm\\\\Relation\\\\BelongsToMany\\:\\:\\$targetCandidateKey type has no value type specified in iterable type array\\.$#" + message: '#^Property ipl\\Orm\\Relation\\BelongsToMany\:\:\$targetCandidateKey type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation/BelongsToMany.php - - message: "#^Property ipl\\\\Orm\\\\Relation\\\\BelongsToMany\\:\\:\\$targetForeignKey type has no value type specified in iterable type array\\.$#" + message: '#^Property ipl\\Orm\\Relation\\BelongsToMany\:\:\$targetForeignKey type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Relation/BelongsToMany.php - - message: "#^Property ipl\\\\Orm\\\\Relation\\\\BelongsToMany\\:\\:\\$through \\(ipl\\\\Orm\\\\Model\\) does not accept object\\.$#" + message: '#^Property ipl\\Orm\\Relation\\BelongsToMany\:\:\$through \(ipl\\Orm\\Model\) does not accept object\.$#' + identifier: assign.propertyType count: 1 path: src/Relation/BelongsToMany.php - - message: "#^Class ipl\\\\Orm\\\\Relations implements generic interface IteratorAggregate but does not specify its types\\: TKey, TValue$#" + message: '#^Class ipl\\Orm\\Relations implements generic interface IteratorAggregate but does not specify its types\: TKey, TValue$#' + identifier: missingType.generics count: 1 path: src/Relations.php - - message: "#^Method ipl\\\\Orm\\\\Relations\\:\\:assertRelationDoesNotYetExist\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Relations\:\:assertRelationDoesNotYetExist\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Relations.php - - message: "#^Method ipl\\\\Orm\\\\Relations\\:\\:assertRelationExists\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Relations\:\:assertRelationExists\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Relations.php - - message: "#^Method ipl\\\\Orm\\\\ResolvedExpression\\:\\:getColumns\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\ResolvedExpression\:\:getColumns\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/ResolvedExpression.php - - message: "#^Cannot access offset non\\-falsy\\-string on mixed\\.$#" + message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 2 path: src/Resolver.php - - message: "#^Cannot access offset string on mixed\\.$#" + message: '#^Cannot access offset string on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible count: 5 path: src/Resolver.php - - message: "#^Cannot call method getTarget\\(\\) on mixed\\.$#" + message: '#^Cannot call method getTarget\(\) on mixed\.$#' + identifier: method.nonObject count: 1 path: src/Resolver.php - - message: "#^Cannot call method isOne\\(\\) on mixed\\.$#" + message: '#^Cannot call method isOne\(\) on mixed\.$#' + identifier: method.nonObject count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:collectColumns\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:collectColumns\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:collectMetaData\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:collectMetaData\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:getBehaviors\\(\\) should return ipl\\\\Orm\\\\Behaviors but returns mixed\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:getBehaviors\(\) should return ipl\\Orm\\Behaviors but returns mixed\.$#' + identifier: return.type count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:getColumnDefinitions\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:getColumnDefinitions\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:getColumnDefinitions\\(\\) should return array but returns mixed\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:getColumnDefinitions\(\) should return array but returns mixed\.$#' + identifier: return.type count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:getDefaults\\(\\) return type has no value type specified in iterable type ipl\\\\Orm\\\\Defaults\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:getDefaults\(\) return type has no value type specified in iterable type ipl\\Orm\\Defaults\.$#' + identifier: missingType.iterableValue count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:getDefaults\\(\\) should return ipl\\\\Orm\\\\Defaults but returns mixed\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:getDefaults\(\) should return ipl\\Orm\\Defaults but returns mixed\.$#' + identifier: return.type count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:getRelations\\(\\) should return ipl\\\\Orm\\\\Relations but returns mixed\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:getRelations\(\) should return ipl\\Orm\\Relations but returns mixed\.$#' + identifier: return.type count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:getSelectColumns\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:getSelectColumns\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:getSelectColumns\\(\\) should return array but returns mixed\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:getSelectColumns\(\) should return array but returns mixed\.$#' + identifier: return.type count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:getSelectableColumns\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:getSelectableColumns\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:hasSelectableColumn\\(\\) should return bool but returns mixed\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:hasSelectableColumn\(\) should return bool but returns mixed\.$#' + identifier: return.type count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:qualifyColumns\\(\\) has parameter \\$columns with no value type specified in iterable type iterable\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:qualifyColumns\(\) has parameter \$columns with no value type specified in iterable type iterable\.$#' + identifier: missingType.iterableValue count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:qualifyColumns\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:qualifyColumns\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:qualifyColumnsAndAliases\\(\\) has parameter \\$columns with no value type specified in iterable type iterable\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:qualifyColumnsAndAliases\(\) has parameter \$columns with no value type specified in iterable type iterable\.$#' + identifier: missingType.iterableValue count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:qualifyColumnsAndAliases\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:qualifyColumnsAndAliases\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:requireAndResolveColumns\\(\\) has parameter \\$columns with no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:requireAndResolveColumns\(\) has parameter \$columns with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/Resolver.php - - message: "#^Method ipl\\\\Orm\\\\Resolver\\:\\:resolveRelation\\(\\) should return ipl\\\\Orm\\\\Relation but returns mixed\\.$#" + message: '#^Method ipl\\Orm\\Resolver\:\:resolveRelation\(\) should return ipl\\Orm\\Relation but returns mixed\.$#' + identifier: return.type count: 1 path: src/Resolver.php - - message: "#^Parameter \\#1 \\$array of function array_keys expects array, mixed given\\.$#" + message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' + identifier: argument.type count: 1 path: src/Resolver.php - - message: "#^Property ipl\\\\Orm\\\\Resolver\\:\\:\\$aliases with generic class SplObjectStorage does not specify its types\\: TObject, TData$#" + message: '#^Property ipl\\Orm\\Resolver\:\:\$aliases with generic class SplObjectStorage does not specify its types\: TObject, TData$#' + identifier: missingType.generics count: 1 path: src/Resolver.php - - message: "#^Property ipl\\\\Orm\\\\Resolver\\:\\:\\$behaviors with generic class SplObjectStorage does not specify its types\\: TObject, TData$#" + message: '#^Property ipl\\Orm\\Resolver\:\:\$behaviors with generic class SplObjectStorage does not specify its types\: TObject, TData$#' + identifier: missingType.generics count: 1 path: src/Resolver.php - - message: "#^Property ipl\\\\Orm\\\\Resolver\\:\\:\\$defaults with generic class SplObjectStorage does not specify its types\\: TObject, TData$#" + message: '#^Property ipl\\Orm\\Resolver\:\:\$defaults with generic class SplObjectStorage does not specify its types\: TObject, TData$#' + identifier: missingType.generics count: 1 path: src/Resolver.php - - message: "#^Property ipl\\\\Orm\\\\Resolver\\:\\:\\$metaData with generic class SplObjectStorage does not specify its types\\: TObject, TData$#" + message: '#^Property ipl\\Orm\\Resolver\:\:\$metaData with generic class SplObjectStorage does not specify its types\: TObject, TData$#' + identifier: missingType.generics count: 1 path: src/Resolver.php - - message: "#^Property ipl\\\\Orm\\\\Resolver\\:\\:\\$relations with generic class SplObjectStorage does not specify its types\\: TObject, TData$#" + message: '#^Property ipl\\Orm\\Resolver\:\:\$relations with generic class SplObjectStorage does not specify its types\: TObject, TData$#' + identifier: missingType.generics count: 1 path: src/Resolver.php - - message: "#^Property ipl\\\\Orm\\\\Resolver\\:\\:\\$resolvedRelations with generic class SplObjectStorage does not specify its types\\: TObject, TData$#" + message: '#^Property ipl\\Orm\\Resolver\:\:\$resolvedRelations with generic class SplObjectStorage does not specify its types\: TObject, TData$#' + identifier: missingType.generics count: 1 path: src/Resolver.php - - message: "#^Property ipl\\\\Orm\\\\Resolver\\:\\:\\$selectColumns with generic class SplObjectStorage does not specify its types\\: TObject, TData$#" + message: '#^Property ipl\\Orm\\Resolver\:\:\$selectColumns with generic class SplObjectStorage does not specify its types\: TObject, TData$#' + identifier: missingType.generics count: 1 path: src/Resolver.php - - message: "#^Property ipl\\\\Orm\\\\Resolver\\:\\:\\$selectableColumns with generic class SplObjectStorage does not specify its types\\: TObject, TData$#" + message: '#^Property ipl\\Orm\\Resolver\:\:\$selectableColumns with generic class SplObjectStorage does not specify its types\: TObject, TData$#' + identifier: missingType.generics count: 1 path: src/Resolver.php - - message: "#^Class ipl\\\\Orm\\\\ResultSet implements generic interface Iterator but does not specify its types\\: TKey, TValue$#" + message: '#^Class ipl\\Orm\\ResultSet implements generic interface Iterator but does not specify its types\: TKey, TValue$#' + identifier: missingType.generics count: 1 path: src/ResultSet.php - - message: "#^Method ipl\\\\Orm\\\\ResultSet\\:\\:__construct\\(\\) has parameter \\$limit with no type specified\\.$#" + message: '#^Method ipl\\Orm\\ResultSet\:\:__construct\(\) has parameter \$limit with no type specified\.$#' + identifier: missingType.parameter count: 1 path: src/ResultSet.php - - message: "#^Method ipl\\\\Orm\\\\ResultSet\\:\\:__construct\\(\\) has parameter \\$traversable with no value type specified in iterable type Traversable\\.$#" + message: '#^Method ipl\\Orm\\ResultSet\:\:__construct\(\) has parameter \$traversable with no value type specified in iterable type Traversable\.$#' + identifier: missingType.iterableValue count: 1 path: src/ResultSet.php - - message: "#^Method ipl\\\\Orm\\\\ResultSet\\:\\:advance\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\ResultSet\:\:advance\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/ResultSet.php - - message: "#^Method ipl\\\\Orm\\\\ResultSet\\:\\:hasMore\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\ResultSet\:\:hasMore\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/ResultSet.php - - message: "#^Method ipl\\\\Orm\\\\ResultSet\\:\\:hasResult\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\ResultSet\:\:hasResult\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/ResultSet.php - - message: "#^Method ipl\\\\Orm\\\\ResultSet\\:\\:yieldTraversable\\(\\) has no return type specified\\.$#" + message: '#^Method ipl\\Orm\\ResultSet\:\:yieldTraversable\(\) has no return type specified\.$#' + identifier: missingType.return count: 1 path: src/ResultSet.php - - message: "#^Method ipl\\\\Orm\\\\ResultSet\\:\\:yieldTraversable\\(\\) has parameter \\$traversable with no value type specified in iterable type Traversable\\.$#" + message: '#^Method ipl\\Orm\\ResultSet\:\:yieldTraversable\(\) has parameter \$traversable with no value type specified in iterable type Traversable\.$#' + identifier: missingType.iterableValue count: 1 path: src/ResultSet.php - - message: "#^Property ipl\\\\Orm\\\\ResultSet\\:\\:\\$cache has no type specified\\.$#" + message: '#^Property ipl\\Orm\\ResultSet\:\:\$cache has no type specified\.$#' + identifier: missingType.property count: 1 path: src/ResultSet.php - - message: "#^Property ipl\\\\Orm\\\\ResultSet\\:\\:\\$generator has no type specified\\.$#" + message: '#^Property ipl\\Orm\\ResultSet\:\:\$generator has no type specified\.$#' + identifier: missingType.property count: 1 path: src/ResultSet.php - - message: "#^Property ipl\\\\Orm\\\\ResultSet\\:\\:\\$limit has no type specified\\.$#" + message: '#^Property ipl\\Orm\\ResultSet\:\:\$limit has no type specified\.$#' + identifier: missingType.property count: 1 path: src/ResultSet.php - - message: "#^Property ipl\\\\Orm\\\\ResultSet\\:\\:\\$position has no type specified\\.$#" + message: '#^Property ipl\\Orm\\ResultSet\:\:\$position has no type specified\.$#' + identifier: missingType.property count: 1 path: src/ResultSet.php - - message: "#^Method ipl\\\\Orm\\\\UnionModel\\:\\:getUnions\\(\\) return type has no value type specified in iterable type array\\.$#" + message: '#^Method ipl\\Orm\\UnionModel\:\:getUnions\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: src/UnionModel.php - - - - message: "#^Parameter \\#1 \\$model of method ipl\\\\Orm\\\\Query\\:\\:setModel\\(\\) expects ipl\\\\Orm\\\\Model, object given\\.$#" - count: 1 - path: src/UnionQuery.php diff --git a/src/AliasedExpression.php b/src/AliasedExpression.php index ed733a2..dca03bc 100644 --- a/src/AliasedExpression.php +++ b/src/AliasedExpression.php @@ -17,7 +17,7 @@ class AliasedExpression extends Expression * @param ?array $columns The columns used by the expression * @param mixed ...$values The values for the expression */ - public function __construct(string $alias, string $statement, array $columns = null, ...$values) + public function __construct(string $alias, string $statement, ?array $columns = null, ...$values) { parent::__construct($statement, $columns, ...$values); diff --git a/src/Behavior/Binary.php b/src/Behavior/Binary.php index 602c9c7..43e3e11 100644 --- a/src/Behavior/Binary.php +++ b/src/Behavior/Binary.php @@ -79,7 +79,7 @@ public function rewriteCondition(Condition $condition, $relation = null) * {@see \ipl\Orm\Compat\FilterProcessor::requireAndResolveFilterColumns()} */ $column = $condition->metaData()->get('columnName'); - if (isset($this->properties[$column])) { + if ($column !== null && isset($this->properties[$column])) { $value = $condition->metaData()->get('originalValue'); if ($this->isPostgres && is_resource($value)) { diff --git a/src/Exception/InvalidRelationException.php b/src/Exception/InvalidRelationException.php index 51e81bb..215b704 100644 --- a/src/Exception/InvalidRelationException.php +++ b/src/Exception/InvalidRelationException.php @@ -17,9 +17,9 @@ class InvalidRelationException extends Exception * Create a new InvalidRelationException * * @param string $relation The relation name - * @param Model $model The target model + * @param ?Model $model The target model */ - public function __construct($relation, Model $model = null) + public function __construct($relation, ?Model $model = null) { $this->relation = (string) $relation; $this->model = $model; diff --git a/src/Model.php b/src/Model.php index 44baff7..4da680f 100644 --- a/src/Model.php +++ b/src/Model.php @@ -14,7 +14,7 @@ abstract class Model implements \ArrayAccess, \IteratorAggregate { use PropertiesWithDefaults; - final public function __construct(array $properties = null) + final public function __construct(?array $properties = null) { if ($this->hasProperties()) { $this->setProperties($properties); diff --git a/src/Query.php b/src/Query.php index bba87a7..76cd8d3 100644 --- a/src/Query.php +++ b/src/Query.php @@ -602,7 +602,7 @@ public function derive($relation, Model $source) * * @return static */ - public function createSubQuery(Model $target, $targetPath, Model $from = null, bool $link = true) + public function createSubQuery(Model $target, $targetPath, ?Model $from = null, bool $link = true) { $subQuery = (new static()) ->setDb($this->getDb()) @@ -744,9 +744,9 @@ protected function groupColumnsByTarget(Generator $columns) $columnStorage = new SplObjectStorage(); foreach ($columns as list($target, $alias, $column)) { - if (! $columnStorage->contains($target)) { + if (! $columnStorage->offsetExists($target)) { $resolved = new ArrayObject(); - $columnStorage->attach($target, $resolved); + $columnStorage->offsetSet($target, $resolved); } else { $resolved = $columnStorage[$target]; } diff --git a/src/Resolver.php b/src/Resolver.php index fd4f658..a055bfe 100644 --- a/src/Resolver.php +++ b/src/Resolver.php @@ -81,10 +81,10 @@ public function __construct(Query $query) */ public function getRelations(Model $model) { - if (! $this->relations->contains($model)) { + if (! $this->relations->offsetExists($model)) { $relations = new Relations(); $model->createRelations($relations); - $this->relations->attach($model, $relations); + $this->relations->offsetSet($model, $relations); } return $this->relations[$model]; @@ -99,10 +99,10 @@ public function getRelations(Model $model) */ public function getBehaviors(Model $model) { - if (! $this->behaviors->contains($model)) { + if (! $this->behaviors->offsetExists($model)) { $behaviors = new Behaviors(); $model->createBehaviors($behaviors); - $this->behaviors->attach($model, $behaviors); + $this->behaviors->offsetSet($model, $behaviors); foreach ($behaviors as $behavior) { if ($behavior instanceof QueryAwareBehavior) { @@ -123,10 +123,10 @@ public function getBehaviors(Model $model) */ public function getDefaults(Model $model): Defaults { - if (! $this->defaults->contains($model)) { + if (! $this->defaults->offsetExists($model)) { $defaults = new Defaults(); $model->createDefaults($defaults); - $this->defaults->attach($model, $defaults); + $this->defaults->offsetSet($model, $defaults); } return $this->defaults[$model]; @@ -143,7 +143,7 @@ public function getDefaults(Model $model): Defaults */ public function getAlias(Model $model) { - if (! $this->aliases->contains($model)) { + if (! $this->aliases->offsetExists($model)) { throw new OutOfBoundsException(sprintf( "Can't get alias for model '%s'. Alias does not exist", get_class($model) @@ -202,7 +202,7 @@ public function setAliasPrefix($alias) */ public function hasSelectableColumn(Model $subject, $column) { - if (! $this->selectableColumns->contains($subject)) { + if (! $this->selectableColumns->offsetExists($subject)) { $this->collectColumns($subject); } @@ -223,7 +223,7 @@ public function hasSelectableColumn(Model $subject, $column) */ public function getSelectableColumns(Model $subject) { - if (! $this->selectableColumns->contains($subject)) { + if (! $this->selectableColumns->offsetExists($subject)) { $this->collectColumns($subject); } @@ -239,7 +239,7 @@ public function getSelectableColumns(Model $subject) */ public function getSelectColumns(Model $subject) { - if (! $this->selectColumns->contains($subject)) { + if (! $this->selectColumns->offsetExists($subject)) { $this->collectColumns($subject); } @@ -255,8 +255,8 @@ public function getSelectColumns(Model $subject) */ public function getColumnDefinitions(Model $subject) { - if (! $this->metaData->contains($subject)) { - $this->metaData->attach($subject, $this->collectMetaData($subject)); + if (! $this->metaData->offsetExists($subject)) { + $this->metaData->offsetSet($subject, $this->collectMetaData($subject)); } return $this->metaData[$subject]; @@ -329,14 +329,14 @@ public function qualifyColumn($column, $tableName) * Qualify the given columns by the specified model * * @param iterable $columns - * @param Model $model Leave null in case $columns is {@see Resolver::requireAndResolveColumns()} + * @param ?Model $model Leave null in case $columns is {@see Resolver::requireAndResolveColumns()} * * @return array * * @throws InvalidArgumentException If $columns is not iterable * @throws InvalidArgumentException If $model is not passed and $columns is not a generator */ - public function qualifyColumns($columns, Model $model = null) + public function qualifyColumns($columns, ?Model $model = null) { $target = $model ?: $this->query->getModel(); $targetAlias = $this->getAlias($target); @@ -382,7 +382,7 @@ public function qualifyColumns($columns, Model $model = null) * Qualify the given columns and aliases by the specified model * * @param iterable $columns - * @param Model $model Leave null in case $columns is {@see Resolver::requireAndResolveColumns()} + * @param ?Model $model Leave null in case $columns is {@see Resolver::requireAndResolveColumns()} * @param bool $autoAlias Set an alias for columns which have none * * @return array @@ -390,7 +390,7 @@ public function qualifyColumns($columns, Model $model = null) * @throws InvalidArgumentException If $columns is not iterable * @throws InvalidArgumentException If $model is not passed and $columns is not a generator */ - public function qualifyColumnsAndAliases($columns, Model $model = null, $autoAlias = true) + public function qualifyColumnsAndAliases($columns, ?Model $model = null, $autoAlias = true) { $target = $model ?: $this->query->getModel(); $targetAlias = $this->getAlias($target); @@ -492,14 +492,14 @@ public function isDistinctRelation($path) * Also resolves all other relations. * * @param string $path - * @param Model $subject + * @param ?Model $subject * * @return Relation */ - public function resolveRelation($path, Model $subject = null) + public function resolveRelation($path, ?Model $subject = null) { $subject = $subject ?: $this->query->getModel(); - if (! $this->resolvedRelations->contains($subject) || ! isset($this->resolvedRelations[$subject][$path])) { + if (! $this->resolvedRelations->offsetExists($subject) || ! isset($this->resolvedRelations[$subject][$path])) { foreach ($this->resolveRelations($path, $subject) as $_) { // run and exhaust generator } @@ -514,13 +514,13 @@ public function resolveRelation($path, Model $subject = null) * Traverses the entire path and yields the path travelled so far as key and the relation as value. * * @param string $path - * @param Model $subject + * @param ?Model $subject * * @return Generator * @throws InvalidArgumentException In case $path is not fully qualified * @throws InvalidRelationException In case a relation is unknown */ - public function resolveRelations($path, Model $subject = null) + public function resolveRelations($path, ?Model $subject = null) { $relations = explode('.', $path); $subject = $subject ?: $this->query->getModel(); @@ -533,7 +533,7 @@ public function resolveRelations($path, Model $subject = null) } $resolvedRelations = []; - if ($this->resolvedRelations->contains($subject)) { + if ($this->resolvedRelations->offsetExists($subject)) { $resolvedRelations = $this->resolvedRelations[$subject]; } @@ -585,7 +585,7 @@ public function resolveRelations($path, Model $subject = null) $resolvedRelations[$pathBeingResolved] = $relation; } - $this->resolvedRelations->attach($subject, $resolvedRelations); + $this->resolvedRelations->offsetSet($subject, $resolvedRelations); } /** @@ -593,14 +593,14 @@ public function resolveRelations($path, Model $subject = null) * * Related models will be automatically added for eager-loading. * - * @param array $columns - * @param Model $model + * @param array $columns + * @param ?Model $model * * @return Generator * * @throws InvalidColumnException If a column does not exist */ - public function requireAndResolveColumns(array $columns, Model $model = null) + public function requireAndResolveColumns(array $columns, ?Model $model = null) { $model = $model ?: $this->query->getModel(); $tableName = $model->getTableAlias(); @@ -745,7 +745,7 @@ protected function collectColumns(Model $subject) // Don't fail if Model::getColumns() also contains the primary key columns $columns = array_merge((array) $subject->getKeyName(), (array) $subject->getColumns()); - $this->selectColumns->attach($subject, $columns); + $this->selectColumns->offsetSet($subject, $columns); $selectable = []; @@ -759,7 +759,7 @@ protected function collectColumns(Model $subject) } } - $this->selectableColumns->attach($subject, $selectable); + $this->selectableColumns->offsetSet($subject, $selectable); } /**