public function getValue()
 {
     switch ($this->type) {
         case self::VALUETYPE_REF:
             $value = IoCFactory::getInstance($this->value);
             return $value;
         case self::VALUETYPE_VALUE:
             return $this->value;
         case self::VALUETYPE_EVAL:
             $value = null;
             eval("\$value = {$this->value};");
             return $value;
     }
 }
 public function getInstance($constructorArgs)
 {
     $factory = parent::getInstance(array());
     if (!$factory instanceof IoCClassFactorable) {
         throw new Exception('Factory do not implements IoCClassFactorable');
     }
     $instance = IoCFactory::getInstance($this->subject);
     if (count($constructorArgs)) {
         $args = $this->constructArgs->getArgsArray();
         array_unshift($args, $instance);
         call_user_func_array(array($newClass, $method), $args);
     } else {
         $factory->produce($instance);
     }
     return $instance;
 }
Example #3
0
 /**
  * 根据id创建对象(的容器)实例, 不使用容器
  * @param string $id
  * @param array $properties 类属性, 覆盖配置文件中的属性
  * @param callable $injector fun($src), 获取注入值的方法
  * @param callable $init fun($inst, &$got) 初始化实例, 在创建后, 调用构造函数前
  * @param array $construct_args 构造函数的参数
  * @return object
  */
 public function createRawObject($id, $construct_args = null, $properties = null, $injector = null, $init = null)
 {
     return parent::create($id, $construct_args, $properties, $injector, $init);
 }
Example #4
0
 * objects.
 */
$_SESSION['current_user'] = array('user_firstname' => 'john', 'user_id' => 1);
$_SERVER['some'] = 'Enviroment value of some';
// Using the Factory
/*
$injectedAIns = IoCFactory::getInstance('injectionA');
$injectedCIns = IoCFactory::getInstance('injectionC');
$pseudoInjectedAIns = IoCFactory::getInstance('pseudoInjectionA');
$injectedBIns = IoCFactory::getInstance('injectionB');
$injectedDIns = IoCFactory::getInstance('injectionD');
$injectedS1Ins = IoCFactory::getInstance('injASingletonated');
$injectedS2Ins = IoCFactory::getInstance('injASingletonated');
$injectedS3Ins = IoCFactory::getInstance('injectionSingle');
*/
$injectedB = IoCFactory::getInstance('factoryA');
//print_r($injected);
//print_r($injectedAIns);
//print_r($pseudoInjectedAIns);
//print_r($injectedBIns);
//print_r($injectedCIns);
//print_r($injectedDIns);
//print_r($injectedS1Ins);
//print_r($injectedS2Ins);
//print_r($injectedS3Ins);
print_r($injectedB);
/*
 * The folowing classes are the ones used to test...
 **/
class printSelf
{
Example #5
0
 public static function setConfiguration(IoCClasses $configuration)
 {
     self::$configuration = $configuration;
 }