type fixes

This commit is contained in:
Yuri Kuznetsov
2022-03-17 17:18:49 +02:00
parent ef0c9e86a9
commit 099e0745f5
18 changed files with 61 additions and 25 deletions
@@ -95,7 +95,7 @@ class FilterFactory
}
/**
* @return class-string
* @return class-string<Filter>
*/
private function getClassName(string $entityType, string $name): ?string
{
@@ -103,6 +103,7 @@ class FilterFactory
throw new Error("Empty access control filter name.");
}
/** @var ?class-string<Filter> */
$className = $this->metadata->get(
[
'selectDefs',
@@ -119,6 +120,9 @@ class FilterFactory
return $this->getDefaultClassName($name);
}
/**
* @return class-string<Filter>
*/
private function getDefaultClassName(string $name): ?string
{
$className = 'Espo\\Core\\Select\\AccessControl\\Filters\\' . ucfirst($name);
@@ -127,6 +131,7 @@ class FilterFactory
return null;
}
/** @var class-string<Filter> */
return $className;
}
}
@@ -90,20 +90,22 @@ class FilterResolverFactory
}
/**
* @return class-string
* @return class-string<FilterResolver>
*/
private function getClassName(string $entityType): string
{
/** @var class-string<FilterResolver> */
return $this->metadata->get([
'selectDefs', $entityType, 'accessControlFilterResolverClassName'
]) ?? DefaultFilterResolver::class;
}
/**
* @return class-string
* @return class-string<FilterResolver>
*/
private function getPortalClassName(string $entityType): string
{
/** @var class-string<FilterResolver> */
return $this->metadata->get([
'selectDefs', $entityType, 'portalAccessControlFilterResolverClassName'
]) ?? DefaultPortalFilterResolver::class;
@@ -50,7 +50,7 @@ class Additional
}
/**
* @param class-string[] $classNameList
* @param class-string<AdditionalApplier>[] $classNameList
*/
public function apply(array $classNameList, QueryBuilder $queryBuilder, SearchParams $searchParams): void
{
@@ -62,7 +62,7 @@ class Additional
}
/**
* @param class-string $className
* @param class-string<AdditionalApplier> $className
*/
private function createApplier(string $className): AdditionalApplier
{
@@ -103,7 +103,7 @@ class Select
/**
* @param string[] $attributeList
* @return string[]
* @return array<int,array{string,string}|string>
*/
protected function prepareAttributeList(array $attributeList, SearchParams $searchParams): array
{
@@ -109,10 +109,13 @@ class Factory
}
/**
* @return class-string
* @return class-string<object>
*/
protected function getDefaultClassName(string $type): string
{
return 'Espo\\Core\\Select\\Applier\Appliers\\' . ucfirst($type);
/** @var class-string<object> */
$className = 'Espo\\Core\\Select\\Applier\Appliers\\' . ucfirst($type);
return $className;
}
}
@@ -82,7 +82,7 @@ class FilterFactory
}
/**
* @return class-string|null
* @return ?class-string<Filter>
*/
protected function getClassName(string $entityType, string $name): ?string
{
@@ -100,6 +100,7 @@ class FilterFactory
);
if ($className) {
/** @var ?class-string<Filter> */
return $className;
}
@@ -107,13 +108,14 @@ class FilterFactory
}
/**
* @return class-string|null
* @return ?class-string<Filter>
*/
protected function getDefaultClassName(string $name): ?string
{
$className1 = $this->metadata->get(['app', 'select', 'boolFilterClassNameMap', $name]);
if ($className1) {
/** @var ?class-string<Filter> */
return $className1;
}
@@ -123,6 +125,7 @@ class FilterFactory
return null;
}
/** @var ?class-string<Filter> */
return $className;
}
}
@@ -66,10 +66,11 @@ class ItemConverterFactory
}
/**
* @return class-string|null
* @return ?class-string<ItemConverter>
*/
private function getClassName(string $entityType, string $field): ?string
{
/** @var ?class-string<ItemConverter> */
$className = $this->metadata->get([
'selectDefs', $entityType, 'orderItemConverterClassNameMap', $field
]);
@@ -86,6 +87,7 @@ class ItemConverterFactory
return null;
}
/** @var ?class-string<ItemConverter> */
$className = $this->metadata->get([
'app', 'select', 'orderItemConverterClassNameMap', $type
]);
@@ -97,6 +99,7 @@ class ItemConverterFactory
$className = 'Espo\\Core\\Select\\Order\\ItemConverters\\' . ucfirst($type) . 'Type';
if (class_exists($className)) {
/** @var class-string<ItemConverter> */
return $className;
}
@@ -56,9 +56,11 @@ class EnumType implements ItemConverter
public function convert(Item $item): OrderList
{
/** @var string */
$orderBy = $item->getOrderBy();
$order = $item->getOrder() ?? SearchParams::ORDER_ASC;
/** @var ?string[] */
$list = $this->metadata->get([
'entityDefs', $this->entityType, 'fields', $orderBy, 'options'
]);
@@ -80,7 +80,7 @@ class FilterFactory
}
/**
* @return class-string|null
* @return ?class-string<Filter>
*/
protected function getClassName(string $entityType, string $name): ?string
{
@@ -104,6 +104,9 @@ class FilterFactory
return $this->getDefaultClassName($name);
}
/**
* @return ?class-string<Filter>
*/
protected function getDefaultClassName(string $name): ?string
{
$className = 'Espo\\Core\\Select\\Primary\\Filters\\' . ucfirst($name);
@@ -112,6 +115,7 @@ class FilterFactory
return null;
}
/** @var class-string<Filter> */
return $className;
}
}
@@ -30,6 +30,7 @@
namespace Espo\Core\Select;
use Espo\Core\Select\Where\Item as WhereItem;
use Espo\Core\Utils\Json;
use InvalidArgumentException;
use stdClass;
@@ -281,7 +282,7 @@ class SearchParams
}
if ($params instanceof stdClass) {
$params = json_decode(json_encode($params), true);
$params = json_decode(Json::encode($params), true);
}
$object = new self();
+11 -3
View File
@@ -89,7 +89,7 @@ class SelectBuilder
private bool $applyComplexExpressionsForbidden = false;
/**
* @var class-string[]
* @var class-string<\Espo\Core\Select\Applier\AdditionalApplier>[]
*/
private array $additionalApplierClassNameList = [];
@@ -333,9 +333,8 @@ class SelectBuilder
/**
* Apply a list of additional applier class names.
* Classes must implement `Applier\AdditionalApplier` interface.
*
* @param string[] $additionalApplierClassNameList
* @param class-string<\Espo\Core\Select\Applier\AdditionalApplier>[] $additionalApplierClassNameList
*/
public function withAdditionalApplierClassNameList(array $additionalApplierClassNameList): self
{
@@ -507,6 +506,7 @@ class SelectBuilder
private function createWhereApplier(): WhereApplier
{
/** @var WhereApplier */
return $this->applierFactory->create(
$this->entityType,
$this->user,
@@ -516,6 +516,7 @@ class SelectBuilder
private function createSelectApplier(): SelectApplier
{
/** @var SelectApplier */
return $this->applierFactory->create(
$this->entityType,
$this->user,
@@ -525,6 +526,7 @@ class SelectBuilder
private function createOrderApplier(): OrderApplier
{
/** @var OrderApplier */
return $this->applierFactory->create(
$this->entityType,
$this->user,
@@ -534,6 +536,7 @@ class SelectBuilder
private function createLimitApplier(): LimitApplier
{
/** @var LimitApplier */
return $this->applierFactory->create(
$this->entityType,
$this->user,
@@ -543,6 +546,7 @@ class SelectBuilder
private function createAccessControlFilterApplier(): AccessControlFilterApplier
{
/** @var AccessControlFilterApplier */
return $this->applierFactory->create(
$this->entityType,
$this->user,
@@ -552,6 +556,7 @@ class SelectBuilder
private function createTextFilterApplier(): TextFilterApplier
{
/** @var TextFilterApplier */
return $this->applierFactory->create(
$this->entityType,
$this->user,
@@ -561,6 +566,7 @@ class SelectBuilder
private function createPrimaryFilterApplier(): PrimaryFilterApplier
{
/** @var PrimaryFilterApplier */
return $this->applierFactory->create(
$this->entityType,
$this->user,
@@ -570,6 +576,7 @@ class SelectBuilder
private function createBoolFilterListApplier(): BoolFilterListApplier
{
/** @var BoolFilterListApplier */
return $this->applierFactory->create(
$this->entityType,
$this->user,
@@ -579,6 +586,7 @@ class SelectBuilder
private function createAdditionalApplier(): AdditionalApplier
{
/** @var AdditionalApplier */
return $this->applierFactory->create(
$this->entityType,
$this->user,
@@ -84,6 +84,8 @@ class SelectManagerFactory
$className = $this->defaultClassName;
}
/** @var class-string<SelectManager> $className */
if ($user) {
$acl = $this->aclManagerProvider->get($user)->createUserAcl($user);
}
@@ -51,7 +51,7 @@ class FilterFactory
public function create(string $entityType, User $user): Filter
{
/** @var class-string */
/** @var class-string<Filter> */
$className = $this->metadata->get(['selectDefs', $entityType, 'textFilterClassName']) ??
DefaultFilter::class;
@@ -56,7 +56,7 @@ class FullTextSearchDataComposerFactory
}
/**
* @return class-string
* @return class-string<FullTextSearchDataComposer>
*/
private function getClassName(string $entityType): string
{
@@ -131,7 +131,7 @@ class ConverterFactory
}
/**
* @return class-string
* @return class-string<Converter>
*/
private function getConverterClassName(string $entityType): string
{
@@ -145,7 +145,7 @@ class ConverterFactory
}
/**
* @return class-string
* @return class-string<ItemGeneralConverter>
*/
private function getItemConverterClassName(string $entityType): string
{
@@ -159,7 +159,7 @@ class ConverterFactory
}
/**
* @return class-string
* @return class-string<DateTimeItemTransformer>
*/
private function getDateTimeItemTransformerClassName(string $entityType): string
{
+4 -1
View File
@@ -142,8 +142,11 @@ class Item
*/
public function getRaw(): array
{
/** @var string */
$type = $this->type;
$raw = [
'type' => $this->type,
'type' => $type,
'value' => $this->value,
];
@@ -82,7 +82,7 @@ class ItemConverterFactory
}
/**
* @return class-string|null
* @return ?class-string<ItemConverter>
*/
protected function getClassNameForType(string $type): ?string
{
@@ -121,7 +121,7 @@ class ItemConverterFactory
}
/**
* @return class-string|null
* @return ?class-string<ItemConverter>
*/
protected function getClassName(string $entityType, string $attribute, string $type): ?string
{
+1 -1
View File
@@ -63,7 +63,7 @@ class SenderFactory implements Factory
throw new RuntimeException("No `smsProvider` in config.");
}
/** @var ?class-string */
/** @var ?class-string<Sender> */
$className = $this->metadata->get(['app', 'smsProviders', $provider, 'senderClassName']);
if (!$className) {