Test Failed
Push — master ( 90a3be...261c05 )
by Alain
06:34
created
src/View/Location/FilesystemLocation.php 1 patch
Indentation   +156 added lines, -156 removed lines patch added patch discarded remove patch
@@ -28,160 +28,160 @@
 block discarded – undo
28 28
 class FilesystemLocation implements Location
29 29
 {
30 30
 
31
-    /**
32
-     * Path that this location points to.
33
-     *
34
-     * @since 0.1.0
35
-     *
36
-     * @var string
37
-     */
38
-    protected $path;
39
-
40
-    /**
41
-     * Extensions that this location can accept.
42
-     *
43
-     * @since 0.1.0
44
-     *
45
-     * @var Extensions
46
-     */
47
-    protected $extensions;
48
-
49
-    /**
50
-     * Instantiate a FilesystemLocation object.
51
-     *
52
-     * @since 0.1.0
53
-     *
54
-     * @param string                       $path       Path that this location points to.
55
-     * @param Extensions|array|string|null $extensions Optional. Extensions that this location can accept.
56
-     */
57
-    public function __construct(string $path, $extensions = null)
58
-    {
59
-        $this->path       = $path;
60
-        $this->extensions = $this->validateExtensions($extensions);
61
-    }
62
-
63
-    /**
64
-     * Get the first URI that matches the given criteria.
65
-     *
66
-     * @since 0.1.0
67
-     *
68
-     * @param array $criteria Criteria to match.
69
-     *
70
-     * @return string|false URI that matches the criteria or false if none found.
71
-     */
72
-    public function getURI(array $criteria)
73
-    {
74
-        $uris = $this->getURIs($criteria);
75
-
76
-        return $uris->count() > 0
77
-            ? $this->getURIs($criteria)->first()
78
-            : false;
79
-    }
80
-
81
-    /**
82
-     * Get all URIs that match the given criteria.
83
-     *
84
-     * @since 0.1.1
85
-     *
86
-     * @param array $criteria Criteria to match.
87
-     *
88
-     * @return URIs URIs that match the criteria or an empty collection if none found.
89
-     */
90
-    public function getURIs(array $criteria): URIs
91
-    {
92
-        $uris = new URIs();
93
-
94
-        foreach ($this->extensions as $extension) {
95
-            $finder = new Finder();
96
-
97
-            try {
98
-                $finder->files()
99
-                    ->name($this->getNamePattern($criteria, $extension))
100
-                    ->in($this->getPathPattern());
101
-                foreach ($finder as $file) {
102
-                    /** @var SplFileInfo $file */
103
-                    $uris->add($file->getPathname());
104
-                }
105
-            } catch (Exception $exception) {
106
-                // Fail silently;
107
-            }
108
-        }
109
-
110
-        return $uris;
111
-    }
112
-
113
-    /**
114
-     * Get the name pattern to pass to the file finder.
115
-     *
116
-     * @since 0.1.3
117
-     *
118
-     * @param array  $criteria  Criteria to match.
119
-     * @param string $extension Extension to match.
120
-     *
121
-     * @return string Name pattern to pass to the file finder.
122
-     */
123
-    protected function getNamePattern(array $criteria, string $extension): string
124
-    {
125
-        $names = [];
126
-
127
-        $names[] = array_map(function ($criterion) use ($extension) {
128
-            $criterion = URIHelper::getFilename($criterion);
129
-
130
-            return empty($extension) || URIHelper::hasExtension($criterion, $extension)
131
-                ? $criterion
132
-                : $criterion . $extension;
133
-        }, $criteria)[0];
134
-
135
-        return $this->arrayToRegexPattern(array_unique($names));
136
-    }
137
-
138
-    /**
139
-     * Get the path pattern to pass to the file finder.
140
-     *
141
-     * @since 0.1.3
142
-     *
143
-     * @return string Path pattern to pass to the file finder.
144
-     */
145
-    protected function getPathPattern(): string
146
-    {
147
-        return $this->path;
148
-    }
149
-
150
-    /**
151
-     * Get an array as a regular expression pattern string.
152
-     *
153
-     * @since 0.1.3
154
-     *
155
-     * @param array $array Array to generate the pattern for.
156
-     *
157
-     * @return string Generated regular expression pattern.
158
-     */
159
-    protected function arrayToRegexPattern(array $array): string
160
-    {
161
-        $array = array_map('preg_quote', $array);
162
-
163
-        return '/' . implode('|', $array) . '/';
164
-    }
165
-
166
-    /**
167
-     * Validate the extensions and return a collection.
168
-     *
169
-     * @since 0.1.1
170
-     *
171
-     * @param Extensions|array|string|null $extensions Extensions to validate.
172
-     *
173
-     * @return Extensions Validated extensions collection.
174
-     */
175
-    protected function validateExtensions($extensions): Extensions
176
-    {
177
-        if (empty($extensions)) {
178
-            $extensions = new Extensions(['']);
179
-        }
180
-
181
-        if (! $extensions instanceof Extensions) {
182
-            $extensions = new Extensions((array)$extensions);
183
-        }
184
-
185
-        return $extensions;
186
-    }
31
+	/**
32
+	 * Path that this location points to.
33
+	 *
34
+	 * @since 0.1.0
35
+	 *
36
+	 * @var string
37
+	 */
38
+	protected $path;
39
+
40
+	/**
41
+	 * Extensions that this location can accept.
42
+	 *
43
+	 * @since 0.1.0
44
+	 *
45
+	 * @var Extensions
46
+	 */
47
+	protected $extensions;
48
+
49
+	/**
50
+	 * Instantiate a FilesystemLocation object.
51
+	 *
52
+	 * @since 0.1.0
53
+	 *
54
+	 * @param string                       $path       Path that this location points to.
55
+	 * @param Extensions|array|string|null $extensions Optional. Extensions that this location can accept.
56
+	 */
57
+	public function __construct(string $path, $extensions = null)
58
+	{
59
+		$this->path       = $path;
60
+		$this->extensions = $this->validateExtensions($extensions);
61
+	}
62
+
63
+	/**
64
+	 * Get the first URI that matches the given criteria.
65
+	 *
66
+	 * @since 0.1.0
67
+	 *
68
+	 * @param array $criteria Criteria to match.
69
+	 *
70
+	 * @return string|false URI that matches the criteria or false if none found.
71
+	 */
72
+	public function getURI(array $criteria)
73
+	{
74
+		$uris = $this->getURIs($criteria);
75
+
76
+		return $uris->count() > 0
77
+			? $this->getURIs($criteria)->first()
78
+			: false;
79
+	}
80
+
81
+	/**
82
+	 * Get all URIs that match the given criteria.
83
+	 *
84
+	 * @since 0.1.1
85
+	 *
86
+	 * @param array $criteria Criteria to match.
87
+	 *
88
+	 * @return URIs URIs that match the criteria or an empty collection if none found.
89
+	 */
90
+	public function getURIs(array $criteria): URIs
91
+	{
92
+		$uris = new URIs();
93
+
94
+		foreach ($this->extensions as $extension) {
95
+			$finder = new Finder();
96
+
97
+			try {
98
+				$finder->files()
99
+					->name($this->getNamePattern($criteria, $extension))
100
+					->in($this->getPathPattern());
101
+				foreach ($finder as $file) {
102
+					/** @var SplFileInfo $file */
103
+					$uris->add($file->getPathname());
104
+				}
105
+			} catch (Exception $exception) {
106
+				// Fail silently;
107
+			}
108
+		}
109
+
110
+		return $uris;
111
+	}
112
+
113
+	/**
114
+	 * Get the name pattern to pass to the file finder.
115
+	 *
116
+	 * @since 0.1.3
117
+	 *
118
+	 * @param array  $criteria  Criteria to match.
119
+	 * @param string $extension Extension to match.
120
+	 *
121
+	 * @return string Name pattern to pass to the file finder.
122
+	 */
123
+	protected function getNamePattern(array $criteria, string $extension): string
124
+	{
125
+		$names = [];
126
+
127
+		$names[] = array_map(function ($criterion) use ($extension) {
128
+			$criterion = URIHelper::getFilename($criterion);
129
+
130
+			return empty($extension) || URIHelper::hasExtension($criterion, $extension)
131
+				? $criterion
132
+				: $criterion . $extension;
133
+		}, $criteria)[0];
134
+
135
+		return $this->arrayToRegexPattern(array_unique($names));
136
+	}
137
+
138
+	/**
139
+	 * Get the path pattern to pass to the file finder.
140
+	 *
141
+	 * @since 0.1.3
142
+	 *
143
+	 * @return string Path pattern to pass to the file finder.
144
+	 */
145
+	protected function getPathPattern(): string
146
+	{
147
+		return $this->path;
148
+	}
149
+
150
+	/**
151
+	 * Get an array as a regular expression pattern string.
152
+	 *
153
+	 * @since 0.1.3
154
+	 *
155
+	 * @param array $array Array to generate the pattern for.
156
+	 *
157
+	 * @return string Generated regular expression pattern.
158
+	 */
159
+	protected function arrayToRegexPattern(array $array): string
160
+	{
161
+		$array = array_map('preg_quote', $array);
162
+
163
+		return '/' . implode('|', $array) . '/';
164
+	}
165
+
166
+	/**
167
+	 * Validate the extensions and return a collection.
168
+	 *
169
+	 * @since 0.1.1
170
+	 *
171
+	 * @param Extensions|array|string|null $extensions Extensions to validate.
172
+	 *
173
+	 * @return Extensions Validated extensions collection.
174
+	 */
175
+	protected function validateExtensions($extensions): Extensions
176
+	{
177
+		if (empty($extensions)) {
178
+			$extensions = new Extensions(['']);
179
+		}
180
+
181
+		if (! $extensions instanceof Extensions) {
182
+			$extensions = new Extensions((array)$extensions);
183
+		}
184
+
185
+		return $extensions;
186
+	}
187 187
 }
Please login to merge, or discard this patch.
src/View/ViewBuilder.php 1 patch
Indentation   +242 added lines, -242 removed lines patch added patch discarded remove patch
@@ -34,273 +34,273 @@
 block discarded – undo
34 34
 class ViewBuilder
35 35
 {
36 36
 
37
-    use ConfigTrait;
37
+	use ConfigTrait;
38 38
 
39
-    const ENGINE_FINDER_KEY = 'EngineFinder';
40
-    const VIEW_FINDER_KEY = 'ViewFinder';
39
+	const ENGINE_FINDER_KEY = 'EngineFinder';
40
+	const VIEW_FINDER_KEY = 'ViewFinder';
41 41
 
42
-    /**
43
-     * BaseViewFinder instance.
44
-     *
45
-     * @since 0.1.0
46
-     *
47
-     * @var ViewFinder
48
-     */
49
-    protected $viewFinder;
42
+	/**
43
+	 * BaseViewFinder instance.
44
+	 *
45
+	 * @since 0.1.0
46
+	 *
47
+	 * @var ViewFinder
48
+	 */
49
+	protected $viewFinder;
50 50
 
51
-    /**
52
-     * BaseEngineFinder instance.
53
-     *
54
-     * @since 0.1.0
55
-     *
56
-     * @var BaseEngineFinder
57
-     */
58
-    protected $engineFinder;
51
+	/**
52
+	 * BaseEngineFinder instance.
53
+	 *
54
+	 * @since 0.1.0
55
+	 *
56
+	 * @var BaseEngineFinder
57
+	 */
58
+	protected $engineFinder;
59 59
 
60
-    /**
61
-     * Locations to scan for views.
62
-     *
63
-     * @since 0.1.0
64
-     *
65
-     * @var Locations
66
-     */
67
-    protected $locations;
60
+	/**
61
+	 * Locations to scan for views.
62
+	 *
63
+	 * @since 0.1.0
64
+	 *
65
+	 * @var Locations
66
+	 */
67
+	protected $locations;
68 68
 
69
-    /**
70
-     * Instantiate a ViewBuilder object.
71
-     *
72
-     * @since 0.1.0
73
-     *
74
-     * @param ConfigInterface       $config       Optional. Configuration settings.
75
-     * @param ViewFinder|null       $viewFinder   Optional. BaseViewFinder instance.
76
-     * @param BaseEngineFinder|null $engineFinder Optional. BaseEngineFinder instance.
77
-     *
78
-     * @throws FailedToProcessConfigException If the config could not be processed.
79
-     */
80
-    public function __construct(
81
-        ConfigInterface $config = null,
82
-        ViewFinder $viewFinder = null,
83
-        BaseEngineFinder $engineFinder = null
84
-    ) {
85
-        $this->processConfig($this->getConfig($config));
86
-        $this->viewFinder   = $viewFinder;
87
-        $this->engineFinder = $engineFinder;
88
-        $this->locations    = new Locations();
89
-    }
69
+	/**
70
+	 * Instantiate a ViewBuilder object.
71
+	 *
72
+	 * @since 0.1.0
73
+	 *
74
+	 * @param ConfigInterface       $config       Optional. Configuration settings.
75
+	 * @param ViewFinder|null       $viewFinder   Optional. BaseViewFinder instance.
76
+	 * @param BaseEngineFinder|null $engineFinder Optional. BaseEngineFinder instance.
77
+	 *
78
+	 * @throws FailedToProcessConfigException If the config could not be processed.
79
+	 */
80
+	public function __construct(
81
+		ConfigInterface $config = null,
82
+		ViewFinder $viewFinder = null,
83
+		BaseEngineFinder $engineFinder = null
84
+	) {
85
+		$this->processConfig($this->getConfig($config));
86
+		$this->viewFinder   = $viewFinder;
87
+		$this->engineFinder = $engineFinder;
88
+		$this->locations    = new Locations();
89
+	}
90 90
 
91
-    /**
92
-     * Create a new view for a given URI.
93
-     *
94
-     * @since 0.1.0
95
-     *
96
-     * @param string $view View identifier to create a view for.
97
-     * @param mixed  $type Type of view to create.
98
-     *
99
-     * @return View Instance of the requested view.
100
-     * @throws FailedToInstantiateView If the view could not be instantiated.
101
-     */
102
-    public function create(string $view, $type = null): View
103
-    {
104
-        $uri    = $this->scanLocations([$view]);
105
-        $engine = $uri
106
-            ? $this->getEngine($uri)
107
-            : false;
91
+	/**
92
+	 * Create a new view for a given URI.
93
+	 *
94
+	 * @since 0.1.0
95
+	 *
96
+	 * @param string $view View identifier to create a view for.
97
+	 * @param mixed  $type Type of view to create.
98
+	 *
99
+	 * @return View Instance of the requested view.
100
+	 * @throws FailedToInstantiateView If the view could not be instantiated.
101
+	 */
102
+	public function create(string $view, $type = null): View
103
+	{
104
+		$uri    = $this->scanLocations([$view]);
105
+		$engine = $uri
106
+			? $this->getEngine($uri)
107
+			: false;
108 108
 
109
-        return ($uri && $engine)
110
-            ? $this->getView($uri, $engine, $type)
111
-            : $this->getViewFinder()->getNullObject();
112
-    }
109
+		return ($uri && $engine)
110
+			? $this->getView($uri, $engine, $type)
111
+			: $this->getViewFinder()->getNullObject();
112
+	}
113 113
 
114
-    /**
115
-     * Get an Engine that can deal with the given URI.
116
-     *
117
-     * @since 0.1.0
118
-     *
119
-     * @param string $uri URI to get an engine for.
120
-     *
121
-     * @return Engine Instance of an engine that can deal with the given URI.
122
-     */
123
-    public function getEngine(string $uri): Engine
124
-    {
125
-        return $this->getEngineFinder()->find([$uri]);
126
-    }
114
+	/**
115
+	 * Get an Engine that can deal with the given URI.
116
+	 *
117
+	 * @since 0.1.0
118
+	 *
119
+	 * @param string $uri URI to get an engine for.
120
+	 *
121
+	 * @return Engine Instance of an engine that can deal with the given URI.
122
+	 */
123
+	public function getEngine(string $uri): Engine
124
+	{
125
+		return $this->getEngineFinder()->find([$uri]);
126
+	}
127 127
 
128
-    /**
129
-     * Get a view for a given URI, engine and type.
130
-     *
131
-     * @since 0.1.0
132
-     *
133
-     * @param string $uri    URI to get a view for.
134
-     * @param Engine $engine Engine to use for the view.
135
-     * @param mixed  $type   Type of view to get.
136
-     *
137
-     * @return View View that matches the given requirements.
138
-     * @throws FailedToInstantiateView If the view could not be instantiated.
139
-     */
140
-    public function getView(string $uri, Engine $engine, $type = null): View
141
-    {
142
-        $view = (null === $type)
143
-            ? $this->getViewFinder()->find([$uri], $engine)
144
-            : $this->resolveType($type, $uri, $engine);
128
+	/**
129
+	 * Get a view for a given URI, engine and type.
130
+	 *
131
+	 * @since 0.1.0
132
+	 *
133
+	 * @param string $uri    URI to get a view for.
134
+	 * @param Engine $engine Engine to use for the view.
135
+	 * @param mixed  $type   Type of view to get.
136
+	 *
137
+	 * @return View View that matches the given requirements.
138
+	 * @throws FailedToInstantiateView If the view could not be instantiated.
139
+	 */
140
+	public function getView(string $uri, Engine $engine, $type = null): View
141
+	{
142
+		$view = (null === $type)
143
+			? $this->getViewFinder()->find([$uri], $engine)
144
+			: $this->resolveType($type, $uri, $engine);
145 145
 
146
-        return $view->setBuilder($this);
147
-    }
146
+		return $view->setBuilder($this);
147
+	}
148 148
 
149
-    /**
150
-     * Get the ViewFinder instance.
151
-     *
152
-     * @since 0.1.0
153
-     *
154
-     * @return ViewFinder Instance of a BaseViewFinder.
155
-     */
156
-    public function getViewFinder(): ViewFinder
157
-    {
158
-        return $this->getFinder($viewFinder, static::VIEW_FINDER_KEY);
159
-    }
149
+	/**
150
+	 * Get the ViewFinder instance.
151
+	 *
152
+	 * @since 0.1.0
153
+	 *
154
+	 * @return ViewFinder Instance of a BaseViewFinder.
155
+	 */
156
+	public function getViewFinder(): ViewFinder
157
+	{
158
+		return $this->getFinder($viewFinder, static::VIEW_FINDER_KEY);
159
+	}
160 160
 
161
-    /**
162
-     * Get the EngineFinder instance.
163
-     *
164
-     * @since 0.1.0
165
-     *
166
-     * @return EngineFinder Instance of a BaseEngineFinder.
167
-     */
168
-    public function getEngineFinder(): EngineFinder
169
-    {
170
-        return $this->getFinder($this->engineFinder, static::ENGINE_FINDER_KEY);
171
-    }
161
+	/**
162
+	 * Get the EngineFinder instance.
163
+	 *
164
+	 * @since 0.1.0
165
+	 *
166
+	 * @return EngineFinder Instance of a BaseEngineFinder.
167
+	 */
168
+	public function getEngineFinder(): EngineFinder
169
+	{
170
+		return $this->getFinder($this->engineFinder, static::ENGINE_FINDER_KEY);
171
+	}
172 172
 
173
-    /**
174
-     * Add a location to scan with the BaseViewFinder.
175
-     *
176
-     * @since 0.1.0
177
-     *
178
-     * @param Location $location Location to scan with the BaseViewFinder.
179
-     */
180
-    public function addLocation(Location $location)
181
-    {
182
-        $this->locations->add($location);
183
-    }
173
+	/**
174
+	 * Add a location to scan with the BaseViewFinder.
175
+	 *
176
+	 * @since 0.1.0
177
+	 *
178
+	 * @param Location $location Location to scan with the BaseViewFinder.
179
+	 */
180
+	public function addLocation(Location $location)
181
+	{
182
+		$this->locations->add($location);
183
+	}
184 184
 
185
-    /**
186
-     * Get the collection of locations registered with this ViewBuilder.
187
-     *
188
-     * @since 0.1.3
189
-     *
190
-     * @return Locations Collection of locations.
191
-     */
192
-    public function getLocations()
193
-    {
194
-        return $this->locations;
195
-    }
185
+	/**
186
+	 * Get the collection of locations registered with this ViewBuilder.
187
+	 *
188
+	 * @since 0.1.3
189
+	 *
190
+	 * @return Locations Collection of locations.
191
+	 */
192
+	public function getLocations()
193
+	{
194
+		return $this->locations;
195
+	}
196 196
 
197
-    /**
198
-     * Scan Locations for an URI that matches the specified criteria.
199
-     *
200
-     * @since 0.1.0
201
-     *
202
-     * @param array $criteria Criteria to match.
203
-     *
204
-     * @return string|false URI of the requested view, or false if not found.
205
-     */
206
-    public function scanLocations(array $criteria)
207
-    {
208
-        $uris = $this->locations->map(function ($location) use ($criteria) {
209
-            /** @var Location $location */
210
-            return $location->getURI($criteria);
211
-        })->filter(function ($uri) {
212
-            return false !== $uri;
213
-        });
197
+	/**
198
+	 * Scan Locations for an URI that matches the specified criteria.
199
+	 *
200
+	 * @since 0.1.0
201
+	 *
202
+	 * @param array $criteria Criteria to match.
203
+	 *
204
+	 * @return string|false URI of the requested view, or false if not found.
205
+	 */
206
+	public function scanLocations(array $criteria)
207
+	{
208
+		$uris = $this->locations->map(function ($location) use ($criteria) {
209
+			/** @var Location $location */
210
+			return $location->getURI($criteria);
211
+		})->filter(function ($uri) {
212
+			return false !== $uri;
213
+		});
214 214
         
215
-        // Fall back for absolute paths on current filesystem.
216
-        if ($uris->isEmpty()) {
217
-            foreach ($criteria as $criterion) {
218
-                if (file_exists($criterion)) {
219
-                    return $criterion;
220
-                }
221
-            }
222
-        }
215
+		// Fall back for absolute paths on current filesystem.
216
+		if ($uris->isEmpty()) {
217
+			foreach ($criteria as $criterion) {
218
+				if (file_exists($criterion)) {
219
+					return $criterion;
220
+				}
221
+			}
222
+		}
223 223
 
224
-        return $uris->isEmpty() ? false : $uris->first();
225
-    }
224
+		return $uris->isEmpty() ? false : $uris->first();
225
+	}
226 226
 
227
-    /**
228
-     * Get a finder instance.
229
-     *
230
-     * @since 0.1.1
231
-     *
232
-     * @param mixed  $property Property to use.
233
-     * @param string $key      Configuration key to use.
234
-     *
235
-     * @return ViewFinder|EngineFinder The requested finder instance.
236
-     */
237
-    protected function getFinder(&$property, $key)
238
-    {
239
-        if (null === $property) {
240
-            $finderClass = $this->config->getKey($key, 'ClassName');
241
-            $property    = new $finderClass($this->config->getSubConfig($key));
242
-        }
227
+	/**
228
+	 * Get a finder instance.
229
+	 *
230
+	 * @since 0.1.1
231
+	 *
232
+	 * @param mixed  $property Property to use.
233
+	 * @param string $key      Configuration key to use.
234
+	 *
235
+	 * @return ViewFinder|EngineFinder The requested finder instance.
236
+	 */
237
+	protected function getFinder(&$property, $key)
238
+	{
239
+		if (null === $property) {
240
+			$finderClass = $this->config->getKey($key, 'ClassName');
241
+			$property    = new $finderClass($this->config->getSubConfig($key));
242
+		}
243 243
 
244
-        return $property;
245
-    }
244
+		return $property;
245
+	}
246 246
 
247
-    /**
248
-     * Resolve the view type.
249
-     *
250
-     * @since 0.1.0
251
-     *
252
-     * @param mixed       $type   Type of view that was requested.
253
-     * @param string      $uri    URI to get a view for.
254
-     * @param Engine|null $engine Engine to use for the view.
255
-     *
256
-     * @return View Resolved View object.
257
-     * @throws FailedToInstantiateView If the view type could not be resolved.
258
-     */
259
-    protected function resolveType($type, string $uri, Engine $engine = null): View
260
-    {
261
-        $configKey = [static::VIEW_FINDER_KEY, 'Views', $type];
247
+	/**
248
+	 * Resolve the view type.
249
+	 *
250
+	 * @since 0.1.0
251
+	 *
252
+	 * @param mixed       $type   Type of view that was requested.
253
+	 * @param string      $uri    URI to get a view for.
254
+	 * @param Engine|null $engine Engine to use for the view.
255
+	 *
256
+	 * @return View Resolved View object.
257
+	 * @throws FailedToInstantiateView If the view type could not be resolved.
258
+	 */
259
+	protected function resolveType($type, string $uri, Engine $engine = null): View
260
+	{
261
+		$configKey = [static::VIEW_FINDER_KEY, 'Views', $type];
262 262
 
263
-        if (is_string($type) && $this->config->hasKey($configKey)) {
264
-            $className = $this->config->getKey($configKey);
265
-            $type      = new $className($uri, $engine);
266
-        }
263
+		if (is_string($type) && $this->config->hasKey($configKey)) {
264
+			$className = $this->config->getKey($configKey);
265
+			$type      = new $className($uri, $engine);
266
+		}
267 267
 
268
-        if (is_string($type)) {
269
-            $type = new $type($uri, $engine);
270
-        }
268
+		if (is_string($type)) {
269
+			$type = new $type($uri, $engine);
270
+		}
271 271
 
272
-        if (is_callable($type)) {
273
-            $type = $type($uri, $engine);
274
-        }
272
+		if (is_callable($type)) {
273
+			$type = $type($uri, $engine);
274
+		}
275 275
 
276
-        if (! $type instanceof View) {
277
-            throw new FailedToInstantiateView(
278
-                sprintf(
279
-                    _('Could not instantiate view "%s".'),
280
-                    serialize($type)
281
-                )
282
-            );
283
-        }
276
+		if (! $type instanceof View) {
277
+			throw new FailedToInstantiateView(
278
+				sprintf(
279
+					_('Could not instantiate view "%s".'),
280
+					serialize($type)
281
+				)
282
+			);
283
+		}
284 284
 
285
-        return $type;
286
-    }
285
+		return $type;
286
+	}
287 287
 
288
-    /**
289
-     * Get the configuration to use in the ViewBuilder.
290
-     *
291
-     * @since 0.2.0
292
-     *
293
-     * @param ConfigInterface|array $config Config to merge with defaults.
294
-     *
295
-     * @return ConfigInterface Configuration passed in through the constructor.
296
-     */
297
-    protected function getConfig($config = []): ConfigInterface
298
-    {
299
-        $defaults = ConfigFactory::create(dirname(__DIR__, 2) . '/config/defaults.php', $config);
300
-        $config   = $config
301
-            ? ConfigFactory::createFromArray(array_merge_recursive($defaults->getArrayCopy(), $config->getArrayCopy()))
302
-            : $defaults;
288
+	/**
289
+	 * Get the configuration to use in the ViewBuilder.
290
+	 *
291
+	 * @since 0.2.0
292
+	 *
293
+	 * @param ConfigInterface|array $config Config to merge with defaults.
294
+	 *
295
+	 * @return ConfigInterface Configuration passed in through the constructor.
296
+	 */
297
+	protected function getConfig($config = []): ConfigInterface
298
+	{
299
+		$defaults = ConfigFactory::create(dirname(__DIR__, 2) . '/config/defaults.php', $config);
300
+		$config   = $config
301
+			? ConfigFactory::createFromArray(array_merge_recursive($defaults->getArrayCopy(), $config->getArrayCopy()))
302
+			: $defaults;
303 303
 
304
-        return $config->getSubConfig('BrightNucleus\View');
305
-    }
304
+		return $config->getSubConfig('BrightNucleus\View');
305
+	}
306 306
 }
Please login to merge, or discard this patch.