Skip to content

Commit

Permalink
Increase PHPStan level to 6 (#246)
Browse files Browse the repository at this point in the history
* Formatting

* Increase PHPStan level

* Increase PHPStan level

* Remove "tests" path

* Revert changes
  • Loading branch information
staudenmeir authored Sep 24, 2024
1 parent 988da08 commit e33ebb3
Show file tree
Hide file tree
Showing 41 changed files with 409 additions and 408 deletions.
3 changes: 0 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@
"larastan/larastan": "^2.9",
"mockery/mockery": "^1.6",
"orchestra/testbench": "^9.0",
"phpstan/phpstan": "^1.10",
"phpstan/phpstan-mockery": "^1.1",
"phpstan/phpstan-phpunit": "^1.4",
"phpunit/phpunit": "^11.0",
"staudenmeir/eloquent-json-relations": "^1.11",
"staudenmeir/laravel-adjacency-list": "^1.21"
Expand Down
6 changes: 1 addition & 5 deletions phpstan.neon.dist
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
includes:
- ./vendor/larastan/larastan/extension.neon
- ./vendor/phpstan/phpstan-mockery/extension.neon
- ./vendor/phpstan/phpstan-phpunit/extension.neon
- ./vendor/phpstan/phpstan-phpunit/rules.neon
parameters:
level: 5
level: 6
paths:
- src
- tests
treatPhpDocTypesAsCertain: false
ignoreErrors:
- '#Unsafe usage of new static\(\).#'
6 changes: 6 additions & 0 deletions src/Eloquent/CompositeKey.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,14 @@

class CompositeKey
{
/**
* @var list<string> $columns
*/
public array $columns;

/**
* @param string ...$columns
*/
public function __construct(...$columns)
{
$this->columns = $columns;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,25 @@

/**
* @copyright Based on package by Constantin Graf (korridor): https://github.com/korridor/laravel-has-many-merged
*
* @template TRelatedModel of \Illuminate\Database\Eloquent\Model
*
* @extends \Korridor\LaravelHasManyMerged\HasManyMerged<TRelatedModel>
*/
class HasManyMerged extends Base implements ConcatenableRelation
{
/**
* Append the relation's through parents, foreign and local keys to a deep relationship.
*
* @param \Illuminate\Database\Eloquent\Model[] $through
* @param array $foreignKeys
* @param array $localKeys
* @param list<\Illuminate\Database\Eloquent\Model> $through
* @param list<array{0: string,
* 1: string}|callable|string|\Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey> $foreignKeys
* @param list<array{0: string,
* 1: string}|callable|string|\Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey> $localKeys
* @param int $position
* @return array
* @return array{0: list<string>,
* 1: list<array{0: string, 1: string}|callable|string|\Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey>,
* 2: list<array{0: string, 1: string}|callable|string|\Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey>}
*/
public function appendToDeepRelationship(array $through, array $foreignKeys, array $localKeys, int $position): array
{
Expand Down Expand Up @@ -55,7 +63,7 @@ function (JoinClause $join) {
* Get the custom through key for an eager load of the relation.
*
* @param string $alias
* @return array
* @return list<string>
*/
public function getThroughKeyForDeepRelationships(string $alias): array
{
Expand All @@ -71,8 +79,8 @@ public function getThroughKeyForDeepRelationships(string $alias): array
/**
* Set the constraints for an eager load of the deep relation.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param array $models
* @param \Illuminate\Database\Eloquent\Builder<\Illuminate\Database\Eloquent\Model> $query
* @param list<\Illuminate\Database\Eloquent\Model> $models
* @return void
*/
public function addEagerConstraintsToDeepRelationship(Builder $query, array $models): void
Expand All @@ -85,10 +93,10 @@ public function addEagerConstraintsToDeepRelationship(Builder $query, array $mod
/**
* Match the eagerly loaded results for a deep relationship to their parents.
*
* @param array $models
* @param \Illuminate\Database\Eloquent\Collection $results
* @param list<\Illuminate\Database\Eloquent\Model> $models
* @param \Illuminate\Database\Eloquent\Collection<int, \Illuminate\Database\Eloquent\Model> $results
* @param string $relation
* @return array
* @return list<\Illuminate\Database\Eloquent\Model>
*/
public function matchResultsForDeepRelationship(array $models, Collection $results, string $relation): array
{
Expand All @@ -109,8 +117,8 @@ public function matchResultsForDeepRelationship(array $models, Collection $resul
/**
* Build the model dictionary for a deep relation.
*
* @param \Illuminate\Database\Eloquent\Collection $results
* @return array
* @param \Illuminate\Database\Eloquent\Collection<int, \Illuminate\Database\Eloquent\Model> $results
* @return array<int|string, list<\Illuminate\Database\Eloquent\Model>>
*/
protected function buildDictionaryForDeepRelationship(Collection $results): array
{
Expand All @@ -124,6 +132,7 @@ protected function buildDictionaryForDeepRelationship(Collection $results): arra
foreach ($results as $result) {
foreach ($foreignKeyNames as $foreignKeyName) {
$foreignKeyValue = $result->{$foreignKeyName};

if (!isset($dictionary[$foreignKeyValue])) {
$dictionary[$foreignKeyValue] = [];
}
Expand All @@ -138,7 +147,7 @@ protected function buildDictionaryForDeepRelationship(Collection $results): arra
/**
* Create a new instance of the relation from a base relation instance.
*
* @param \Korridor\LaravelHasManyMerged\HasManyMerged $relation
* @param \Korridor\LaravelHasManyMerged\HasManyMerged<TRelatedModel> $relation
* @return static
*/
public static function fromBaseRelation(Base $relation): static
Expand Down
16 changes: 8 additions & 8 deletions src/Eloquent/Relations/Traits/ExecutesQueries.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ public function getResults()
/**
* Execute the query as a "select" statement.
*
* @param array $columns
* @return \Illuminate\Database\Eloquent\Collection
* @param string|list<string> $columns
* @return \Illuminate\Database\Eloquent\Collection<int, \Illuminate\Database\Eloquent\Model>
*/
public function get($columns = ['*'])
{
Expand All @@ -46,10 +46,10 @@ public function get($columns = ['*'])
* Get a paginator for the "select" statement.
*
* @param int $perPage
* @param array $columns
* @param list<string> $columns
* @param string $pageName
* @param int $page
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator<\Illuminate\Database\Eloquent\Model>
*/
public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
{
Expand All @@ -69,10 +69,10 @@ public function paginate($perPage = null, $columns = ['*'], $pageName = 'page',
* Paginate the given query into a simple paginator.
*
* @param int $perPage
* @param array $columns
* @param list<string> $columns
* @param string $pageName
* @param int|null $page
* @return \Illuminate\Contracts\Pagination\Paginator
* @return \Illuminate\Contracts\Pagination\Paginator<\Illuminate\Database\Eloquent\Model>
*/
public function simplePaginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
{
Expand All @@ -92,10 +92,10 @@ public function simplePaginate($perPage = null, $columns = ['*'], $pageName = 'p
* Paginate the given query into a cursor paginator.
*
* @param int|null $perPage
* @param array $columns
* @param list<string> $columns
* @param string $cursorName
* @param string|null $cursor
* @return \Illuminate\Contracts\Pagination\CursorPaginator
* @return \Illuminate\Contracts\Pagination\CursorPaginator<\Illuminate\Database\Eloquent\Model>
*/
public function cursorPaginate($perPage = null, $columns = ['*'], $cursorName = 'cursor', $cursor = null)
{
Expand Down
16 changes: 2 additions & 14 deletions src/Eloquent/Relations/Traits/HasEagerLoading.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,7 @@

trait HasEagerLoading
{
/**
* Set the constraints for an eager load of the relation.
*
* @param array $models
* @return void
*/
/** @inheritDoc */
public function addEagerConstraints(array $models)
{
if ($this->customEagerConstraintsCallback) {
Expand All @@ -34,14 +29,7 @@ public function addEagerConstraints(array $models)
}
}

/**
* Match the eagerly loaded results to their parents.
*
* @param array $models
* @param \Illuminate\Database\Eloquent\Collection $results
* @param string $relation
* @return array
*/
/** @inheritDoc */
public function match(array $models, Collection $results, $relation)
{
if ($this->customEagerMatchingCallbacks) {
Expand Down
20 changes: 3 additions & 17 deletions src/Eloquent/Relations/Traits/HasExistenceQueries.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,7 @@

trait HasExistenceQueries
{
/**
* Add the constraints for a relationship query.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param \Illuminate\Database\Eloquent\Builder $parentQuery
* @param array|mixed $columns
* @return \Illuminate\Database\Eloquent\Builder
*/
/** @inheritDoc */
public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*'])
{
$this->setRelationExistenceQueryAlias($parentQuery);
Expand Down Expand Up @@ -44,14 +37,7 @@ public function getRelationExistenceQuery(Builder $query, Builder $parentQuery,
return $query;
}

/**
* Add the constraints for a relationship query on the same table.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param \Illuminate\Database\Eloquent\Builder $parentQuery
* @param array|mixed $columns
* @return \Illuminate\Database\Eloquent\Builder
*/
/** @inheritDoc */
public function getRelationExistenceQueryForSelfRelation(Builder $query, Builder $parentQuery, $columns = ['*'])
{
$hash = $this->getRelationCountHash();
Expand All @@ -72,7 +58,7 @@ public function getRelationExistenceQueryForSelfRelation(Builder $query, Builder
/**
* Set the table alias for a relation existence query if necessary.
*
* @param \Illuminate\Database\Eloquent\Builder $parentQuery
* @param \Illuminate\Database\Eloquent\Builder<\Illuminate\Database\Eloquent\Model> $parentQuery
* @return void
*/
protected function setRelationExistenceQueryAlias(Builder $parentQuery): void
Expand Down
10 changes: 6 additions & 4 deletions src/Eloquent/Relations/Traits/IsConcatenable.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@ trait IsConcatenable
/**
* Append the relation's through parents, foreign and local keys to a deep relationship.
*
* @param \Illuminate\Database\Eloquent\Model[] $through
* @param array $foreignKeys
* @param array $localKeys
* @param list<\Illuminate\Database\Eloquent\Model> $through
* @param list<string|callable|\Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey> $foreignKeys
* @param list<string|callable|\Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey> $localKeys
* @param int $position
* @return array
* @return array{0: list<string>,
* 1: list<string|callable|\Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey>,
* 2: list<string|callable|\Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey>}
*/
public function appendToDeepRelationship(array $through, array $foreignKeys, array $localKeys, int $position): array
{
Expand Down
6 changes: 3 additions & 3 deletions src/Eloquent/Relations/Traits/IsCustomizable.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ trait IsCustomizable
/**
* The custom callbacks to run at the end of the get() method.
*
* @var callable[]
* @var list<callable>
*/
protected array $postGetCallbacks = [];

Expand All @@ -28,14 +28,14 @@ trait IsCustomizable
/**
* The custom matching callbacks for the eagerly loaded results.
*
* @var callable[]
* @var list<callable>
*/
protected array $customEagerMatchingCallbacks = [];

/**
* Set custom callbacks to run at the end of the get() method.
*
* @param callable[] $callbacks
* @param list<callable> $callbacks
* @return $this
*/
public function withPostGetCallbacks(array $callbacks): static
Expand Down
18 changes: 11 additions & 7 deletions src/Eloquent/Relations/Traits/JoinsThroughParents.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,13 @@ trait JoinsThroughParents
/**
* Join a through parent table.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param \Illuminate\Database\Eloquent\Builder<\Illuminate\Database\Eloquent\Model> $query
* @param \Illuminate\Database\Eloquent\Model $throughParent
* @param \Illuminate\Database\Eloquent\Model $predecessor
* @param \Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey|array|string $foreignKey
* @param \Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey|array|string $localKey
* @param array{0: string,
* 1: string}|callable|string|\Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey $foreignKey
* @param array{0: string,
* 1: string}|callable|string|\Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey $localKey
* @param string $prefix
* @return void
*/
Expand Down Expand Up @@ -64,12 +66,14 @@ function (JoinClause $join) use ($joins) {
/**
* Get the joins for a through parent table.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param \Illuminate\Database\Eloquent\Builder<\Illuminate\Database\Eloquent\Model> $query
* @param \Illuminate\Database\Eloquent\Model $throughParent
* @param \Illuminate\Database\Eloquent\Model $predecessor
* @param \Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey|array|string $foreignKey
* @param \Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey|array|string $localKey
* @return array
* @param array{0: string,
* 1: string}|callable|string|\Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey $foreignKey
* @param array{0: string,
* 1: string}|callable|string|\Staudenmeir\EloquentHasManyDeep\Eloquent\CompositeKey $localKey
* @return list<array{0: string, 1: string}>
*/
protected function throughParentJoins(Builder $query, Model $throughParent, Model $predecessor, $foreignKey, $localKey): array
{
Expand Down
Loading

0 comments on commit e33ebb3

Please sign in to comment.