예제 #1
0
 public function getNode($key, $default = null, $getCopy = false)
 {
     $val = $this->get($key);
     if ($val === self::VALUE_UNSET) {
         if ($default === null) {
             return new \stdClass();
         } else {
             $val = $default;
         }
     }
     if ($getCopy) {
         return Tools::deepCloneObject($val);
     }
     return $val;
 }
예제 #2
0
파일: Mosaic.php 프로젝트: cyantree/mosaic
 private function processConfigurationTemplates($node)
 {
     if (!isset($node->templates)) {
         return $node;
     }
     $nodeCopy = Tools::deepCloneObject($node);
     $templates = Tools::singleOrMultipleValuesToArray($node->templates);
     foreach ($templates as $template) {
         $templateData = null;
         if (preg_match('!\\.yml$!', $template)) {
             $templateData = Configuration::createFromFile($this->getPath($template))->configuration;
         } else {
             $subConfig = $this->configuration->getSubConfiguration('templates');
             if ($subConfig->has($template)) {
                 $templateData = $subConfig->getNode($template);
             } else {
                 $templateFile = $this->getApplicationPath('templates/' . $template . '.yml');
                 $templateData = Configuration::createFromFile($templateFile)->configuration;
             }
         }
         if ($templateData) {
             $this->processConfigurationTemplates($templateData);
             Tools::extendObject($node, $templateData);
         }
     }
     Tools::extendObject($node, $nodeCopy);
     return $node;
 }