From 27f0d9fb86be488d5d485d3bcb183a7a21fc129e Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 21 Feb 2022 14:18:24 +0200 Subject: [PATCH] type fixes --- application/Espo/ORM/Query/Part/Condition.php | 4 ++-- application/Espo/ORM/Query/Part/Expression.php | 8 +++++++- .../Espo/ORM/Query/Part/Expression/Util.php | 2 ++ application/Espo/ORM/Query/Part/Join.php | 6 +++--- application/Espo/ORM/Query/Part/Order.php | 4 ++-- application/Espo/ORM/Query/Part/OrderList.php | 12 ++++++++++-- .../Espo/ORM/Query/Part/Where/AndGroup.php | 12 +++++++++++- .../ORM/Query/Part/Where/AndGroupBuilder.php | 11 ++++++++--- .../Espo/ORM/Query/Part/Where/Comparison.php | 13 ++++++++++--- application/Espo/ORM/Query/Part/Where/Not.php | 8 +++++++- .../Espo/ORM/Query/Part/Where/OrGroup.php | 9 ++++++++- .../ORM/Query/Part/Where/OrGroupBuilder.php | 11 ++++++++--- application/Espo/ORM/Query/Part/WhereItem.php | 3 +++ application/Espo/ORM/Query/Query.php | 2 ++ application/Espo/ORM/Query/Select.php | 3 +++ application/Espo/ORM/Query/SelectBuilder.php | 5 +++++ .../Espo/ORM/Query/SelectingBuilderTrait.php | 17 +++++++++++++++-- 17 files changed, 106 insertions(+), 24 deletions(-) diff --git a/application/Espo/ORM/Query/Part/Condition.php b/application/Espo/ORM/Query/Part/Condition.php index 6c8ebb275a..13d2eb85cc 100644 --- a/application/Espo/ORM/Query/Part/Condition.php +++ b/application/Espo/ORM/Query/Part/Condition.php @@ -174,7 +174,7 @@ class Condition * Create 'IN' comparison. * * @param Expression $subject What to test. - * @param Select|array $set A set of values. A select query or array of scalars. + * @param Select|scalar[] $set A set of values. A select query or array of scalars. */ public static function in(Expression $subject, $set): Comparison { @@ -185,7 +185,7 @@ class Condition * Create 'NOT IN' comparison. * * @param Expression $subject What to test. - * @param Select|array $set A set of values. A select query or array of scalars. + * @param Select|scalar[] $set A set of values. A select query or array of scalars. */ public static function notIn(Expression $subject, $set): Comparison { diff --git a/application/Espo/ORM/Query/Part/Expression.php b/application/Espo/ORM/Query/Part/Expression.php index 0b02ed043a..84b082656b 100644 --- a/application/Espo/ORM/Query/Part/Expression.php +++ b/application/Espo/ORM/Query/Part/Expression.php @@ -38,7 +38,7 @@ use RuntimeException; */ class Expression implements WhereItem { - private $expression; + private string $expression; public function __construct(string $expression) { @@ -675,11 +675,17 @@ class Expression implements WhereItem return self::composeFunction('NOT', $argument); } + /** + * @param Expression|bool|int|float|string|null ...$argumentList + */ private static function composeFunction(string $function, ...$argumentList): self { return Util::composeFunction($function, ...$argumentList); } + /** + * @param Expression|bool|int|float|string|null $arg + */ private static function stringifyArgument($arg): string { return Util::stringifyArgument($arg); diff --git a/application/Espo/ORM/Query/Part/Expression/Util.php b/application/Espo/ORM/Query/Part/Expression/Util.php index 9437079aa1..83ce1e8530 100644 --- a/application/Espo/ORM/Query/Part/Expression/Util.php +++ b/application/Espo/ORM/Query/Part/Expression/Util.php @@ -37,6 +37,8 @@ class Util { /** * Compose an expression by a function name and arguments. + * + * @param Expr|bool|int|float|string|null ...$argumentList */ public static function composeFunction(string $function, ...$argumentList): Expr { diff --git a/application/Espo/ORM/Query/Part/Join.php b/application/Espo/ORM/Query/Part/Join.php index 134fb40757..66a6205ed8 100644 --- a/application/Espo/ORM/Query/Part/Join.php +++ b/application/Espo/ORM/Query/Part/Join.php @@ -36,11 +36,11 @@ use RuntimeException; */ class Join { - private $target; + private string $target; - private $alias = null; + private ?string $alias = null; - private $conditions = null; + private ?WhereItem $conditions = null; private function __construct(string $target, ?string $alias = null) { diff --git a/application/Espo/ORM/Query/Part/Order.php b/application/Espo/ORM/Query/Part/Order.php index 374b41551a..45dae11795 100644 --- a/application/Espo/ORM/Query/Part/Order.php +++ b/application/Espo/ORM/Query/Part/Order.php @@ -40,9 +40,9 @@ class Order public const DESC = 'DESC'; - private $expression; + private Expression $expression; - private $isDesc = false; + private bool $isDesc = false; private function __construct(Expression $expression) { diff --git a/application/Espo/ORM/Query/Part/OrderList.php b/application/Espo/ORM/Query/Part/OrderList.php index b7f7809657..42e87f9fae 100644 --- a/application/Espo/ORM/Query/Part/OrderList.php +++ b/application/Espo/ORM/Query/Part/OrderList.php @@ -34,13 +34,21 @@ use Iterator; /** * A list of order items. + * + * @implements Iterator */ class OrderList implements Iterator { - private $position = 0; + private int $position = 0; - private $list; + /** + * @var Order[] + */ + private array $list; + /** + * @param Order[] $list + */ private function __construct(array $list) { foreach ($list as $item) { diff --git a/application/Espo/ORM/Query/Part/Where/AndGroup.php b/application/Espo/ORM/Query/Part/Where/AndGroup.php index 44db65d2da..376e10c4ab 100644 --- a/application/Espo/ORM/Query/Part/Where/AndGroup.php +++ b/application/Espo/ORM/Query/Part/Where/AndGroup.php @@ -39,8 +39,14 @@ use Espo\ORM\Query\Part\{ */ class AndGroup implements WhereItem { + /** + * @var array + */ private $rawValue = []; + /** + * @return array + */ public function getRaw(): array { return ['AND' => $this->getRawValue()]; @@ -52,7 +58,7 @@ class AndGroup implements WhereItem } /** - * @return array + * @return array */ public function getRawValue() { @@ -67,6 +73,10 @@ class AndGroup implements WhereItem return count($this->rawValue); } + /** + * @param array $whereClause + * @return self + */ public static function fromRaw(array $whereClause): self { if (count($whereClause) === 1 && array_keys($whereClause)[0] === 0) { diff --git a/application/Espo/ORM/Query/Part/Where/AndGroupBuilder.php b/application/Espo/ORM/Query/Part/Where/AndGroupBuilder.php index fbae17f601..63d89cd938 100644 --- a/application/Espo/ORM/Query/Part/Where/AndGroupBuilder.php +++ b/application/Espo/ORM/Query/Part/Where/AndGroupBuilder.php @@ -29,12 +29,13 @@ namespace Espo\ORM\Query\Part\Where; -use Espo\ORM\Query\Part\{ - WhereItem, -}; +use Espo\ORM\Query\Part\WhereItem; class AndGroupBuilder { + /** + * @var array + */ private $raw = []; public function build(): AndGroup @@ -81,6 +82,10 @@ class AndGroupBuilder return $this; } + /** + * @param array $raw + * @return array + */ private static function normilizeRaw(array $raw): array { if (count($raw) === 1 && array_keys($raw)[0] !== 0) { diff --git a/application/Espo/ORM/Query/Part/Where/Comparison.php b/application/Espo/ORM/Query/Part/Where/Comparison.php index 797b80bc00..c3bd693a0a 100644 --- a/application/Espo/ORM/Query/Part/Where/Comparison.php +++ b/application/Espo/ORM/Query/Part/Where/Comparison.php @@ -63,10 +63,16 @@ class Comparison implements WhereItem private const OPERATOR_NOT_IN_SUB_QUERY = '!=s'; - private $rawKey; + private string $rawKey; + /** + * @var mixed + */ private $rawValue; + /** + * @param mixed $rawValue + */ private function __construct(string $rawKey, $rawValue) { $this->rawKey = $rawKey; @@ -191,7 +197,7 @@ class Comparison implements WhereItem * Create 'IN' comparison. * * @param Expression $subject What to test. - * @param Select|array $set A set of values. A select query or array of scalars. + * @param Select|scalar[] $set A set of values. A select query or array of scalars. * @return self */ public static function in(Expression $subject, $set): self @@ -207,7 +213,7 @@ class Comparison implements WhereItem * Create 'NOT IN' comparison. * * @param Expression $subject What to test. - * @param Select|array $set A set of values. A select query or array of scalars. + * @param Select|scalar[] $set A set of values. A select query or array of scalars. * @return self */ public static function notIn(Expression $subject, $set): self @@ -265,6 +271,7 @@ class Comparison implements WhereItem /** * @param Expression|string $arg1 + * @param scalar[] $valueList */ private static function createInOrNotInArray(string $operator, $arg1, array $valueList): self { diff --git a/application/Espo/ORM/Query/Part/Where/Not.php b/application/Espo/ORM/Query/Part/Where/Not.php index c2c0b4b936..d2888c0156 100644 --- a/application/Espo/ORM/Query/Part/Where/Not.php +++ b/application/Espo/ORM/Query/Part/Where/Not.php @@ -38,6 +38,9 @@ use Espo\ORM\Query\Part\{ */ class Not implements WhereItem { + /** + * @var array + */ private $rawValue = []; public function getRaw(): array @@ -51,13 +54,16 @@ class Not implements WhereItem } /** - * @return array + * @return array */ public function getRawValue() { return $this->rawValue; } + /** + * @param array $whereClause + */ public static function fromRaw(array $whereClause): self { if (count($whereClause) === 1 && array_keys($whereClause)[0] === 0) { diff --git a/application/Espo/ORM/Query/Part/Where/OrGroup.php b/application/Espo/ORM/Query/Part/Where/OrGroup.php index 4147243424..d4528e793b 100644 --- a/application/Espo/ORM/Query/Part/Where/OrGroup.php +++ b/application/Espo/ORM/Query/Part/Where/OrGroup.php @@ -36,6 +36,10 @@ use Espo\ORM\Query\Part\WhereItem; */ class OrGroup implements WhereItem { + + /** + * @var array + */ private $rawValue = []; public function __construct() @@ -53,7 +57,7 @@ class OrGroup implements WhereItem } /** - * @return array + * @return array */ public function getRawValue() { @@ -68,6 +72,9 @@ class OrGroup implements WhereItem return count($this->rawValue); } + /** + * @param array $whereClause + */ public static function fromRaw(array $whereClause): self { $obj = new self(); diff --git a/application/Espo/ORM/Query/Part/Where/OrGroupBuilder.php b/application/Espo/ORM/Query/Part/Where/OrGroupBuilder.php index f7752eb036..7e292e205f 100644 --- a/application/Espo/ORM/Query/Part/Where/OrGroupBuilder.php +++ b/application/Espo/ORM/Query/Part/Where/OrGroupBuilder.php @@ -29,12 +29,13 @@ namespace Espo\ORM\Query\Part\Where; -use Espo\ORM\Query\Part\{ - WhereItem, -}; +use Espo\ORM\Query\Part\WhereItem; class OrGroupBuilder { + /** + * @var array + */ private $raw = []; public function build(): OrGroup @@ -81,6 +82,10 @@ class OrGroupBuilder return $this; } + /** + * @param array $raw + * @return array + */ private static function normilizeRaw(array $raw): array { if (count($raw) === 1 && array_keys($raw)[0] !== 0) { diff --git a/application/Espo/ORM/Query/Part/WhereItem.php b/application/Espo/ORM/Query/Part/WhereItem.php index e1bc4fd9d6..6dc34075c9 100644 --- a/application/Espo/ORM/Query/Part/WhereItem.php +++ b/application/Espo/ORM/Query/Part/WhereItem.php @@ -34,6 +34,9 @@ namespace Espo\ORM\Query\Part; */ interface WhereItem { + /** + * @return array + */ public function getRaw(): array; public function getRawKey(): string; diff --git a/application/Espo/ORM/Query/Query.php b/application/Espo/ORM/Query/Query.php index 87f01d91d1..999866b906 100644 --- a/application/Espo/ORM/Query/Query.php +++ b/application/Espo/ORM/Query/Query.php @@ -36,6 +36,8 @@ interface Query { /** * Get parameters in RAW format. + * + * @return array */ public function getRaw(): array; } diff --git a/application/Espo/ORM/Query/Select.php b/application/Espo/ORM/Query/Select.php index 8b968964a5..c997e13866 100644 --- a/application/Espo/ORM/Query/Select.php +++ b/application/Espo/ORM/Query/Select.php @@ -178,6 +178,9 @@ class Select implements SelectingQuery return WhereClause::fromRaw($havingClause); } + /** + * @param array $params + */ private function validateRawParams(array $params): void { $this->validateRawParamsSelecting($params); diff --git a/application/Espo/ORM/Query/SelectBuilder.php b/application/Espo/ORM/Query/SelectBuilder.php index 8ebbde1b31..4d8234d378 100644 --- a/application/Espo/ORM/Query/SelectBuilder.php +++ b/application/Espo/ORM/Query/SelectBuilder.php @@ -216,6 +216,7 @@ class SelectBuilder implements Builder /** * @deprecated Use `group` method. + * @param Expression|Expression[]|string|string[] $groupBy */ public function groupBy($groupBy): self { @@ -290,6 +291,10 @@ class SelectBuilder implements Builder return $this; } + /** + * @param array $itemList + * @return array + */ private function normilizeSelectExpressionArray(array $itemList): array { $resultList = []; diff --git a/application/Espo/ORM/Query/SelectingBuilderTrait.php b/application/Espo/ORM/Query/SelectingBuilderTrait.php index 874def7a78..a54082be6d 100644 --- a/application/Espo/ORM/Query/SelectingBuilderTrait.php +++ b/application/Espo/ORM/Query/SelectingBuilderTrait.php @@ -59,6 +59,10 @@ trait SelectingBuilderTrait return $this; } + /** + * @param WhereItem|array|string $clause A key or where clause. + * @param mixed[]|scalar|null $value A value. Omitted if the first argument is not string. + */ private function applyWhereClause(string $type, $clause, $value): void { if ($clause instanceof WhereItem) { @@ -159,7 +163,7 @@ trait SelectingBuilderTrait * @param Join|string $target * A relation name or table. A relation name should be in camelCase, a table in CamelCase. * @param string|null $alias An alias. - * @param WhereItem|array|null $conditions Join conditions. + * @param WhereItem|array|null $conditions Join conditions. */ public function join($target, ?string $alias = null, $conditions = null): self { @@ -221,7 +225,7 @@ trait SelectingBuilderTrait * @param Join|string $target * A relation name or table. A relation name should be in camelCase, a table in CamelCase. * @param string|null $alias An alias. - * @param WhereItem|array|null $conditions Join conditions. + * @param WhereItem|array|null $conditions Join conditions. */ public function leftJoin($target, ?string $alias = null, $conditions = null): self { @@ -321,6 +325,10 @@ trait SelectingBuilderTrait return false; } + /** + * @param array $itemList + * @return array + */ private function normilizeExpressionItemArray(array $itemList): array { $resultList = []; @@ -352,6 +360,11 @@ trait SelectingBuilderTrait return $resultList; } + /** + * @param array $itemList + * @param string|bool|null $direction + * @return array + */ private function normilizeOrderExpressionItemArray(array $itemList, $direction): array { $resultList = [];