当前位置: 首页>>代码示例>>PHP>>正文


PHP Reflection::setProperties方法代码示例

本文整理汇总了PHP中Reflection::setProperties方法的典型用法代码示例。如果您正苦于以下问题:PHP Reflection::setProperties方法的具体用法?PHP Reflection::setProperties怎么用?PHP Reflection::setProperties使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Reflection的用法示例。


在下文中一共展示了Reflection::setProperties方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: loadDependency

 /**
  * Realiza la carga de una dependencia que luego va a ser inyectada
  * @param string $name
  * @param array $dependencyDefinition
  * @param array &$loadedDependencies
  * @return type
  */
 protected function loadDependency($name, $dependencyDefinition, &$loadedDependencies = array())
 {
     $newInstance = NULL;
     //Si es singleton analiza si existe y si puede devuelve la msima
     if (isset($this->singletons[$name])) {
         $newInstance = $this->singletons[$name];
     } else {
         //Veo si tiene namespace y si tiene le agrego el mismo
         $namespace = isset($dependencyDefinition['namespace']) ? $dependencyDefinition['namespace'] : '';
         $dir = explode("/", $dependencyDefinition['class']);
         $class = $dir[count($dir) - 1];
         if ($namespace != '') {
             $class = "\\" . $namespace . "\\" . $class;
         }
         //Consigo los parametros del constructor
         $params = array();
         if (isset($dependencyDefinition['constructor'])) {
             //Parseo los parametros correctamente
             $params = $this->parseProperties($dependencyDefinition['constructor']);
         }
         //Creo una instancia con el constructor correspondiente en base a los parametros
         $reflection = new \ReflectionClass($class);
         $newInstance = $reflection->newInstanceArgs($params);
         //La agrego a loadedDependencies para dependencias circulares
         $loadedDependencies[$name] = $newInstance;
         //Si es un singleton la guardo como tal
         if (isset($dependencyDefinition['singleton']) && ($dependencyDefinition['singleton'] == "TRUE" || $dependencyDefinition['singleton'] == "true")) {
             $this->singletons[$name] = $newInstance;
         }
         //Injecto las dependencias a las propiedades
         //Primero veo si hay Referencia a otras dependencias y cargo las mismas y luego guardo las propiedades
         if (isset($dependencyDefinition['properties'])) {
             $properties = $this->parseProperties($dependencyDefinition['properties'], $loadedDependencies);
             $reflection = new Reflection($newInstance);
             $reflection->setProperties($properties, TRUE);
         }
     }
     return $newInstance;
 }
开发者ID:Ignite-IT,项目名称:enolaphp,代码行数:46,代码来源:DependenciesEngine.php


注:本文中的Reflection::setProperties方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。