Passed
Push — 3.x ( 885785...4e5cb3 )
by Aleksei
01:36
created

Entity::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 0
nc 1
nop 11
dl 0
loc 14
ccs 1
cts 1
cp 1
crap 1
rs 10
c 0
b 0
f 0

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cycle\Annotated\Annotation;
6
7
use Doctrine\Common\Annotations\Annotation\NamedArgumentConstructor;
8
use Doctrine\Common\Annotations\Annotation\Target;
9
10
/**
11
 * @Annotation
12
 * @NamedArgumentConstructor
13
 * @Target("CLASS")
14
 */
15
#[\Attribute(\Attribute::TARGET_CLASS), NamedArgumentConstructor]
16
final class Entity
17
{
18
    /**
19
     * @param non-empty-string|null $role Entity role. Defaults to the lowercase class name without a namespace.
0 ignored issues
show
Documentation Bug introduced by
The doc comment non-empty-string|null at position 0 could not be parsed: Unknown type name 'non-empty-string' at position 0 in non-empty-string|null.
Loading history...
20
     * @param class-string|null $mapper Mapper class name. Defaults to {@see \Cycle\ORM\Mapper\Mapper}
21
     * @param class-string|null $repository Repository class to represent read operations for an entity.
22
     *        Defaults to {@see \Cycle\ORM\Select\Repository}
23
     * @param non-empty-string|null $table Entity source table. Defaults to plural form of entity role.
24
     * @param bool $readonlySchema Set to true to disable schema synchronization for the assigned table.
25
     * @param non-empty-string|null $database Database name. Defaults to null (default database).
26
     * @param class-string|null $source Entity source class (internal). Defaults to {@see \Cycle\ORM\Select\Source}
27
     * @param non-empty-string|non-empty-string[]|null $typecast
28
     * @param class-string|null $scope Class name of constraint to be applied to every entity query.
29
     * @param Column[] $columns Entity columns.
30
     */
31 480
    public function __construct(
32
        private ?string $role = null,
33
        private ?string $mapper = null,
34
        private ?string $repository = null,
35
        private ?string $table = null,
36
        private bool $readonlySchema = false,
37
        private ?string $database = null,
38
        private ?string $source = null,
39
        private array|string|null $typecast = null,
40
        private ?string $scope = null,
41
        private array $columns = [],
42
        /** @deprecated Use {@see $scope} instead */
43
        private ?string $constrain = null,
44
    ) {
45 480
    }
46
47 480
    public function getRole(): ?string
48
    {
49 480
        return $this->role;
50
    }
51
52 480
    public function getMapper(): ?string
53
    {
54 480
        return $this->mapper;
55
    }
56
57 480
    public function getRepository(): ?string
58
    {
59 480
        return $this->repository;
60
    }
61
62 480
    public function getTable(): ?string
63
    {
64 480
        return $this->table;
65
    }
66
67 480
    public function isReadonlySchema(): bool
68
    {
69 480
        return $this->readonlySchema;
70
    }
71
72 480
    public function getDatabase(): ?string
73
    {
74 480
        return $this->database;
75
    }
76
77 480
    public function getSource(): ?string
78
    {
79 480
        return $this->source;
80
    }
81
82 480
    public function getScope(): ?string
83
    {
84 480
        return $this->scope ?? $this->constrain;
85
    }
86
87 468
    public function getColumns(): array
88
    {
89 468
        return $this->columns;
90
    }
91
92 480
    public function getTypecast(): array|string|null
93
    {
94 480
        if (is_array($this->typecast) && count($this->typecast) === 1) {
95
            return reset($this->typecast);
96
        }
97
98 480
        return $this->typecast;
99
    }
100
}
101