PluginProbe
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 3.11.2
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v3.11.2
4.7.4 4.7.5 4.7.3 4.7.2 4.7.1 trunk 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 3.0.0 3.0.1 3.1.0 3.10.0 3.10.1 3.11.1 3.11.2 3.11.3 3.2.0 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 All 95 releases
cookiebot / addons / inc / Dependencies / DI / Definition / Source / DefinitionFile.php

DefinitionFile.php in Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode 3.11.2, at addons/inc/Dependencies/DI/Definition/Source/DefinitionFile.php

75 lines 1.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * PHP-DI
4 *
5 * @link http://php-di.org/
6 * @copyright Matthieu Napoli (http://mnapoli.fr/)
7 * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
8 */
9
10 namespace Cybot\Dependencies\DI\Definition\Source;
11
12 use Cybot\Dependencies\DI\Definition\Definition;
13 use Cybot\Dependencies\DI\Definition\Exception\DefinitionException;
14
15 /**
16 * Reads DI definitions from a file returning a PHP array.
17 *
18 * @author Matthieu Napoli <[email protected]>
19 */
20 class DefinitionFile extends DefinitionArray
21 {
22 /**
23 * @var bool
24 */
25 private $initialized = false;
26
27 /**
28 * File containing definitions, or null if the definitions are given as a PHP array.
29 * @var string|null
30 */
31 private $file;
32
33 /**
34 * @param string $file File in which the definitions are returned as an array.
35 */
36 public function __construct($file)
37 {
38 // Lazy-loading to improve performances
39 $this->file = $file;
40
41 parent::__construct([]);
42 }
43
44 /**
45 * {@inheritdoc}
46 */
47 public function getDefinition($name)
48 {
49 $this->initialize();
50
51 return parent::getDefinition($name);
52 }
53
54 /**
55 * Lazy-loading of the definitions.
56 * @throws DefinitionException
57 */
58 private function initialize()
59 {
60 if ($this->initialized === true) {
61 return;
62 }
63
64 $definitions = require $this->file;
65
66 if (! is_array($definitions)) {
67 throw new DefinitionException("File {$this->file} should return an array of definitions");
68 }
69
70 $this->addDefinitions($definitions);
71
72 $this->initialized = true;
73 }
74 }
75