Accessor method for `Environment::$_detector`. If `$_detector` is unset, returns the default
detector built into the class. For more information on setting and using `$_detector`, see
the documentation for `Environment::is()`. The `_detector()` method is called at the
beginning of the application's life-cycle, when `Environment::set()` is passed either an
instance of a `Request` object, or the `$_SERVER` or `$_ENV` array. This object (or array)
is then passed onto `$_detector`, which returns the correct environment.
Returns
object Returns a callable object (anonymous function) which detects the application's current environment.Source
protected static function _detector() {
return static::$_detector ?: function($request) {
$isLocal = in_array($request->env('SERVER_ADDR'), array('::1', '127.0.0.1'));
switch (true) {
case (isset($request->env)):
return $request->env;
case ($request->command == 'test'):
return 'test';
case ($request->env('PLATFORM') == 'CLI'):
return 'development';
case (preg_match('/^test\//', $request->url) && $isLocal):
return 'test';
case ($isLocal):
return 'development';
case (preg_match('/^test/', $request->env('HTTP_HOST'))):
return 'test';
default:
return 'production';
}
};
}