Example #1
0
 /**
  * Helper method for instantiating classes.
  * 
  * Instantiates the given class if it isn't already an object. Uses the
  * service container if available.
  * 
  * @param mixed $class
  * @param array $arguments [optional]
  * @return object
  */
 protected function create($class, $arguments)
 {
     if (!is_object($class) && class_exists($class)) {
         if ($this->services) {
             $class = $this->services->create($class, $arguments);
         } else {
             $reflection = new ReflectionClass($class);
             $class = $reflection->newInstanceArgs($arguments);
         }
     }
     return $class;
 }
Example #2
0
 /**
  * Register a configuration object, and any of its service aliases and
  * providers, with the container.
  * 
  * @param Container $container
  */
 public function register(Container $container)
 {
     $container->register(array('Darya\\Foundation\\Configuration' => function (Application $application) {
         $basePath = $application->basePath();
         // Load the application's configuration
         $configuration = new Configuration(array("{$basePath}/config/config.default.php", "{$basePath}/config/config.php"));
         return $configuration;
     }));
     $configuration = $container->resolve('Darya\\Foundation\\Configuration');
     // Register the configured aliases
     foreach ($configuration['aliases'] as $alias => $service) {
         $container->alias($alias, $service);
     }
     // Register the configured service providers
     if ($container instanceof Application) {
         foreach ($configuration['services'] as $service) {
             if (class_exists($service) && is_subclass_of($service, 'Darya\\Service\\Contracts\\Provider')) {
                 $container->provide($container->create($service));
             }
         }
     }
 }