/**
  * Check if the given application instance has been flushed
  *
  * @param Application $application The Laravel application instance
  *
  * @return bool True if the given application instance has been flushed, false if not
  */
 public function hasBeenFlushed(Application $application)
 {
     // The problem that we are facing here, is that there is no way
     // of telling if the 'flush' method has been invoked, by just asking
     // directly. The only possible way, is to assume that if there are
     // no loaded service providers, then the application must have been
     // flushed or not yet booted. However, while the concrete implementation
     // does provide a method called 'getLoadedProviders', the Application-interface
     // that this method accepts, doesn't know about such a method at all!
     // In addition, if by some chance a very customised application is running,
     // there might not be any service providers attached to it.
     //
     // Nevertheless, we have to assume that;
     // a) If no core application has been resolved, the application has been flushed
     // b) If no core container has been resolved, the application has been flushed
     // @see \Illuminate\Foundation\Application::__construct
     //
     // The only way that we can obtain this information, is to rely on the 'resolved'
     // method, for telling us if certain instances have been resolved...
     //
     // In this case, we are looking for two special cases - the core application and the
     // core container of the application. If these are present / available, it should mean
     // that the application is still running and has yet not been flushed
     return !($application->resolved('app') && $application->resolved('Illuminate\\Container\\Container'));
 }
Example #2
0
 /**
  * Boot theme resolver.
  *
  * @param  \Illuminate\Contracts\Foundation\Application  $app
  * @param  \Orchestra\Contracts\Theme\Theme  $theme
  *
  * @return void
  */
 protected function setThemeResolver(Application $app, Theme $theme)
 {
     // The theme is only booted when the first view is being composed.
     // This would prevent multiple theme being booted in the same
     // request.
     if ($app->resolved('view')) {
         $theme->resolving();
     } else {
         $app->resolving('view', function () use($theme) {
             $theme->resolving();
         });
     }
 }