本文整理汇总了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;
}