Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
/*
6
 * This file is a part of dflydev/dot-access-data.
7
 *
8
 * (c) Dragonfly Development Inc.
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
 
14
namespace Dflydev\DotAccessData;
15
 
16
use Dflydev\DotAccessData\Exception\DataException;
17
use Dflydev\DotAccessData\Exception\InvalidPathException;
18
 
19
interface DataInterface
20
{
21
    public const PRESERVE = 0;
22
    public const REPLACE = 1;
23
    public const MERGE = 2;
24
 
25
    /**
26
     * Append a value to a key (assumes key refers to an array value)
27
     *
28
     * If the key does not yet exist it will be created.
29
     * If the key references a non-array it's existing contents will be added into a new array before appending the new value.
30
     *
31
     * @param string $key
32
     * @param mixed  $value
33
     *
34
     * @throws InvalidPathException if the given key is empty
35
     */
36
    public function append(string $key, $value = null): void;
37
 
38
    /**
39
     * Set a value for a key
40
     *
41
     * If the key does not yet exist it will be created.
42
     *
43
     * @param string $key
44
     * @param mixed  $value
45
     *
46
     * @throws InvalidPathException if the given key is empty
47
     * @throws DataException if the given key does not target an array
48
     */
49
    public function set(string $key, $value = null): void;
50
 
51
    /**
52
     * Remove a key
53
     *
54
     * No exception will be thrown if the key does not exist
55
     *
56
     * @param string $key
57
     *
58
     * @throws InvalidPathException if the given key is empty
59
     */
60
    public function remove(string $key): void;
61
 
62
    /**
63
     * Get the raw value for a key
64
     *
65
     * If the key does not exist, an optional default value can be returned instead.
66
     * If no default is provided then an exception will be thrown instead.
67
     *
68
     * @param string $key
69
     * @param mixed $default
70
     *
71
     * @return mixed
72
     *
73
     * @throws InvalidPathException if the given key is empty
74
     * @throws InvalidPathException if the given key does not exist and no default value was given
75
     *
76
     * @psalm-mutation-free
77
     */
78
    public function get(string $key, $default = null);
79
 
80
    /**
81
     * Check if the key exists
82
     *
83
     * @param string $key
84
     *
85
     * @return bool
86
     *
87
     * @throws InvalidPathException if the given key is empty
88
     *
89
     * @psalm-mutation-free
90
     */
91
    public function has(string $key): bool;
92
 
93
    /**
94
     * Get a data instance for a key
95
     *
96
     * @param string $key
97
     *
98
     * @return DataInterface
99
     *
100
     * @throws InvalidPathException if the given key is empty
101
     * @throws DataException if the given key does not reference an array
102
     *
103
     * @psalm-mutation-free
104
     */
105
    public function getData(string $key): DataInterface;
106
 
107
    /**
108
     * Import data into existing data
109
     *
110
     * @param array<string, mixed>                     $data
111
     * @param self::PRESERVE|self::REPLACE|self::MERGE $mode
112
     */
113
    public function import(array $data, int $mode = self::REPLACE): void;
114
 
115
    /**
116
     * Import data from an external data into existing data
117
     *
118
     * @param DataInterface                            $data
119
     * @param self::PRESERVE|self::REPLACE|self::MERGE $mode
120
     */
121
    public function importData(DataInterface $data, int $mode = self::REPLACE): void;
122
 
123
    /**
124
     * Export data as raw data
125
     *
126
     * @return array<string, mixed>
127
     *
128
     * @psalm-mutation-free
129
     */
130
    public function export(): array;
131
}