Beispiel #1
0
 public function testEmbededPhp()
 {
     $filename = __DIR__ . '/Fixtures/embededPhp.yml';
     Yaml::enablePhpParsing();
     $parsed = Yaml::parse($filename);
     $this->assertEquals(array('value' => 6), $parsed);
 }
 function parse()
 {
     Yaml::enablePhpParsing();
     # parse yaml datas
     $this->rawData = Yaml::parse($this->resource, true, true);
     $config_values = array_merge($this->rawData);
     # pour chaque fixture
     foreach ($config_values['fixtures'] as $entity_def) {
         # obtenir la classe
         $class = $entity_def['entity'];
         /* @note @php changer une propriété privée d'un champ */
         # instancier la classe
         //$prototype = unserialize(sprintf('O:%d:"%s":0:{}', strlen($class), $class));
         $entity = new $class();
         //clone $prototype;
         $ref = new ReflectionObject($entity);
         # pour chaque champ du fixture
         foreach ($entity_def['fields'] as $field => $value) {
             # si la valeur est un tableau
             if (is_array($value)) {
                 # si la valeur est du time datetime
                 if (isset($value['datetime'])) {
                     $value = \DateTime::createFromFormat('U', $value['datetime']);
                 } else {
                     $tmp = new ArrayCollection();
                     # pour chaque valeur du tableau
                     foreach ($value as $name) {
                         # réferencer l'entité déja instanciée dans le tableau
                         $tmp[] = $this->entities[$name];
                     }
                     $value = $tmp;
                 }
                 # si valeur entourée de % % , réferencer l'entité correspondante
             } elseif (preg_match("#^\\%(?P<name>.*)\\%\$#", $value, $matches) > 0) {
                 $value = $this->entities[$matches['name']];
             }
             $field = $ref->getProperty($field);
             $field->setAccessible(true);
             # affecter la valeur du champ à la proprièter
             $field->setValue($entity, $value);
         }
         $name = isset($entity_def['name']) ? $entity_def['name'] : uniqid();
         $this->entities[$name] = $entity;
     }
     # retourner les entitées
     return $this->entities;
 }
 protected function getGenerator($generatorYaml)
 {
     Yaml::enablePhpParsing(true);
     $yaml = Yaml::parse($generatorYaml);
     return $this->container->get($yaml['generator']);
 }
 protected function loadQueueConfig()
 {
     if ($this->queueConfigFile) {
         $this->logger->log("Loading config file: {$this->queueConfigFile}");
         Yaml::enablePhpParsing();
         try {
             $this->queueConfig = Yaml::parse($this->queueConfigFile);
         } catch (ParseException $e) {
             $msg = "Invalid config file: " . $e->getMessage();
             $this->logger->log($msg);
             throw new RuntimeException($msg, 0, $e);
         }
     }
     if (!$this->queueConfig) {
         $this->logger->log('No configuration loaded.');
         $this->queueConfig = array();
     }
 }
 protected function parseYaml($file)
 {
     Yaml::enablePhpParsing(true);
     $this->yaml_datas = Yaml::parse($file);
 }