Typist::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 0
c 1
b 0
f 0
dl 0
loc 2
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
/**
4
 * This file is part of the sj-i/typist package.
5
 *
6
 * (c) sji <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace Typist;
15
16
/**
17
 * @psalm-immutable
18
 */
19
final class Typist
20
{
21
    // phpcs:ignore Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase
22
    public const nullable = NullableTypeEnforcer::class;
23
24
    private function __construct()
25
    {
26
    }
27
28
    /**
29
     * @param-out bool $value_holder
30
     */
31
    public static function bool(?bool &$value_holder, bool $value): BoolEnforcer
32
    {
33
        $value_holder = $value;
34
        return new BoolEnforcer($value_holder);
35
    }
36
37
    /**
38
     * @param-out int $value_holder
39
     */
40
    public static function int(?int &$value_holder, int $value): IntEnforcer
41
    {
42
        $value_holder = $value;
43
        return new IntEnforcer($value_holder);
44
    }
45
46
    /**
47
     * @param-out float $value_holder
48
     */
49
    public static function float(?float &$value_holder, float $value): FloatEnforcer
50
    {
51
        $value_holder = $value;
52
        return new FloatEnforcer($value_holder);
53
    }
54
55
    /**
56
     * @param-out string $value_holder
57
     */
58
    public static function string(?string &$value_holder, string $value): StringEnforcer
59
    {
60
        $value_holder = $value;
61
        return new StringEnforcer($value_holder);
62
    }
63
64
    /**
65
     * @template T
66
     * @param class-string<T> $class_name
67
     * @param T|null $value_holder
68
     * @param T $value
69
     * @param-out T $value_holder
70
     * @return ClassEnforcer
71
     * @throws \ReflectionException
72
     */
73
    public static function class(string $class_name, &$value_holder, $value): ClassEnforcer
74
    {
75
        $value_holder = $value;
76
        return new ClassEnforcer($class_name, $value_holder);
77
    }
78
79
    /**
80
     * @return NullableTypeEnforcer|string
81
     * @psalm-return class-string<NullableTypeEnforcer>
82
     */
83
    public static function nullable(): string
84
    {
85
        return NullableTypeEnforcer::class;
86
    }
87
}
88