-
Notifications
You must be signed in to change notification settings - Fork 0
/
_shortcut.php
119 lines (93 loc) · 2.93 KB
/
_shortcut.php
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
<?php
declare(strict_types=1);
/*
* This file is part of the QuidPHP package <https://quidphp.com>
* Author: Pierre-Philippe Emond <emondpph@gmail.com>
* License: https://github.com/quidphp/base/blob/master/LICENSE
*/
namespace Quid\Base;
// _shortcut
// trait that grants static methods to declare and replace shortcuts (bracketed segments within strings)
trait _shortcut
{
// config
protected static array $shortcut = []; // conserve les shortcuts de la classe
// isShortcut
// retourne vrai si le shortcut existe
final public static function isShortcut(string $key):bool
{
return array_key_exists($key,static::$shortcut);
}
// getShortcut
// retourne la valeur du shortcut ou null si non existant
final public static function getShortcut(string $key):?string
{
return Arr::get($key,static::$shortcut);
}
// setShortcut
// ajoute ou change un shortcut
// le shortcut est passé dans la méthode shortcut avant d'être conservé dans config
final public static function setShortcut(string $key,string $value):void
{
$method = static::setShortcutMethod();
Arr::setRef($key,$method($value),static::$shortcut);
}
// setsShortcut
// ajoute ou change plusieurs shortcuts
final public static function setsShortcut(array $keyValue):void
{
foreach ($keyValue as $key => $value)
{
if(is_string($key) && is_string($value))
static::setShortcut($key,$value);
}
}
// setShortcutMethod
// méthode utilisé lors de l'ajout du shortcut
final public static function setShortcutMethod():\Closure
{
return fn($value) => static::shortcut($value);
}
// unsetShortcut
// enlève un shortcut
final public static function unsetShortcut(string $key):void
{
Arr::unsetRef($key,static::$shortcut);
}
// shortcut
// remplace des segments dans une string ou un tableau à partir des shortcuts
final public static function shortcut($return)
{
if(!empty(static::$shortcut))
{
if(is_string($return))
$return = Segment::sets(null,static::$shortcut,$return);
elseif(is_array($return))
$return = Segment::setsArray(null,static::$shortcut,$return);
}
return $return;
}
// shortcuts
// permet de remplacer plusieurs valeurs contenants un shortcut
final public static function shortcuts(array $return):array
{
foreach ($return as $key => $value)
{
$return[$key] = static::shortcut($value);
}
return $return;
}
// allShortcuts
// retourne tous les shortcuts
final public static function allShortcuts():array
{
return static::$shortcut;
}
// emptyShortcut
// vide les shortcuts
final public static function emptyShortcut():void
{
static::$shortcut = [];
}
}
?>