generated from ergebnis/php-package-template
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathFieldDefinition.php
More file actions
121 lines (109 loc) · 3.28 KB
/
FieldDefinition.php
File metadata and controls
121 lines (109 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
declare(strict_types=1);
/**
* Copyright (c) 2020-2026 Andreas Möller
*
* For the full copyright and license information, please view
* the LICENSE.md file that was distributed with this source code.
*
* @see https://github.com/ergebnis/factory-bot
*/
namespace Ergebnis\FactoryBot;
final class FieldDefinition
{
public static function closure(\Closure $closure): FieldDefinition\Resolvable
{
return new FieldDefinition\Closure($closure);
}
public static function optionalClosure(\Closure $closure): FieldDefinition\Optional
{
return new FieldDefinition\Optional(new FieldDefinition\Closure($closure));
}
/**
* @template T of object
*
* @param class-string<T> $className
* @param array<string, \Closure|FieldDefinition\Resolvable|mixed> $fieldDefinitionOverrides
*
* @return FieldDefinition\Reference<T>
*/
public static function reference(
string $className,
array $fieldDefinitionOverrides = [],
): FieldDefinition\Reference {
return new FieldDefinition\Reference(
$className,
$fieldDefinitionOverrides,
);
}
/**
* @template T of object
*
* @param class-string<T> $className
* @param array<string, \Closure|FieldDefinition\Resolvable|mixed> $fieldDefinitionOverrides
*/
public static function optionalReference(
string $className,
array $fieldDefinitionOverrides = [],
): FieldDefinition\Optional {
return new FieldDefinition\Optional(new FieldDefinition\Reference(
$className,
$fieldDefinitionOverrides,
));
}
/**
* @template T of object
*
* @param class-string<T> $className
* @param array<string, \Closure|FieldDefinition\Resolvable|mixed> $fieldDefinitionOverrides
*
* @return FieldDefinition\References<T>
*/
public static function references(
string $className,
Count $count,
array $fieldDefinitionOverrides = [],
): FieldDefinition\References {
return new FieldDefinition\References(
$className,
$count,
$fieldDefinitionOverrides,
);
}
/**
* @throws Exception\InvalidSequence
*/
public static function sequence(
string $value,
int $initialNumber = 1,
): FieldDefinition\Sequence {
return new FieldDefinition\Sequence(
$value,
$initialNumber,
);
}
public static function optionalSequence(
string $value,
int $initialNumber = 1,
): FieldDefinition\Resolvable {
return new FieldDefinition\Optional(new FieldDefinition\Sequence(
$value,
$initialNumber,
));
}
/**
* @template T of mixed
*
* @param T $value
*
* @return FieldDefinition\Value<T>
*/
public static function value(mixed $value): FieldDefinition\Value
{
return new FieldDefinition\Value($value);
}
public static function optionalValue(mixed $value): FieldDefinition\Optional
{
return new FieldDefinition\Optional(new FieldDefinition\Value($value));
}
}