Changeset 2521

Show
Ignore:
Timestamp:
03/10/10 19:10:20 (5 months ago)
Author:
mikey
Message:

refactor to make it more open for other usage scenarios

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • framework/trunk/src/main/php/net/stubbles/ioc/stubApp.php

    r2237 r2521  
    5858    public static function createInstance($fqClassName, $projectPath, array $argv = null) 
    5959    { 
     60        return self::createInjectorWithBindings(self::getBindingsForClass($fqClassName, $projectPath, $argv)) 
     61                   ->getInstance($fqClassName); 
     62    } 
     63 
     64    /** 
     65     * creates list of bindings from given class 
     66     * 
     67     * @param   string                           $fqClassName  full qualified class name of class to create an instance of 
     68     * @param   string                           $projectPath  path to project 
     69     * @param   array<string>                    $argv         optional  list of arguments 
     70     * @return  array<string|stubBindingModule> 
     71     */ 
     72    public static function getBindingsForClass($fqClassName, $projectPath, array $argv = null) 
     73    { 
    6074        $nqClassName = stubClassLoader::getNonQualifiedClassName($fqClassName); 
    6175        if (class_exists($nqClassName, false) === false) { 
    6276            stubClassLoader::load($fqClassName); 
    6377        } 
    64          
     78 
    6579        $bindings = array(); 
    6680        if (method_exists($nqClassName, '__bindings') === true) { 
    6781            $bindings = call_user_func_array(array($nqClassName, '__bindings'), array($projectPath)); 
    6882        } 
    69          
     83 
    7084        if (null !== $argv) { 
    7185            $bindings[] = new stubArgumentsBindingModule($argv); 
    7286        } 
    73          
    74         return self::createInjectorWithBindings($bindings) 
    75                    ->getInstance($fqClassName); 
     87 
     88        return $bindings; 
    7689    } 
    7790 
     
    8598     * @throws  stubIllegalArgumentException 
    8699     */ 
    87     protected static function createInjectorWithBindings(array $bindingModules) 
     100    public static function createInjectorWithBindings(array $bindingModules) 
    88101    { 
    89102        // use the binder registry for backward compatibility