PluginProbe ʕ •ᴥ•ʔ
Kirki – Freeform Page Builder, Website Builder & Customizer / 6.0.13
Kirki – Freeform Page Builder, Website Builder & Customizer v6.0.13
6.1.1 6.1.0 6.0.14 6.0.13 6.0.12 6.0.11 6.0.10 6.0.9 6.0.8 6.0.7 6.0.6 6.0.5 6.0.4 6.0.3 6.0.2 6.0.1 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 4.0.19 4.0.20 4.0.21 4.0.22 4.0.23 4.0.24 4.1 4.2.0 5.0.0 5.1.0 5.1.1 5.2.0 5.2.1 5.2.2 5.2.3 6.0.0 trunk 3.0.40 3.0.41 3.0.42 3.0.43 3.0.44 3.0.45 3.1.0 3.1.1 3.1.2
kirki / libraries / framework / Concerns / DeepGettable.php
kirki / libraries / framework / Concerns Last commit date
DeepGettable.php 3 weeks ago DependencyResolvable.php 3 weeks ago Dispatchable.php 3 weeks ago HasConstants.php 3 weeks ago
DeepGettable.php
45 lines
1 <?php
2
3 /**
4 * Trait that retrieves nested array values using dot-notation keys.
5 * Walks each segment recursively and returns a default when any level is missing or empty.
6 * Shared by classes that need deep array access without pulling in a full Arr helper.
7 *
8 * @package Framework
9 * @subpackage Concerns
10 * @since 1.0.0
11 */
12 namespace Kirki\Framework\Concerns;
13
14 \defined('ABSPATH') || exit;
15 trait DeepGettable
16 {
17 /**
18 * Return the nested setting values by key recursively.
19 *
20 * @param array $settings The settings.
21 * @param mixed $keys The keys.
22 * @param mixed $default The default.
23 *
24 * @return mixed|null
25 *
26 * @since 1.0.0
27 */
28 protected function deep_get(array $settings, $keys, $default = null)
29 {
30 $keys = \is_array($keys) ? $keys : \explode('.', $keys);
31 if (empty($keys) || empty($settings)) {
32 return $default;
33 }
34 $parent_key = $keys[0];
35 $child_keys = \array_slice($keys, 1);
36 if (empty($child_keys)) {
37 return $settings[$parent_key] ?? $default;
38 }
39 if (empty($settings[$parent_key])) {
40 return $default;
41 }
42 return $this->deep_get($settings[$parent_key], $child_keys, $default);
43 }
44 }
45