Beispiel #1
0
 public static function getService(ArrayObject $config, Loops $loops)
 {
     if ($options = $config->toArray()) {
         return new Docker(new DockerClient($options));
     }
     return new Docker();
 }
Beispiel #2
0
 public function setValue($value)
 {
     if (is_array($value)) {
         $value = new ArrayObject($value);
     }
     $current = $this->subform->getFormElements();
     foreach (array_keys($current) as $key) {
         $this->subform->offsetUnset($key);
     }
     if ($value instanceof ArrayObject) {
         $values = $value->toArray();
     } elseif ($value instanceof Traversable) {
         $values = iterator_to_array($value);
     } else {
         $values = (array) $value;
     }
     static $meh = 0;
     if ($meh++ > 40) {
         throw new \Exception("Meh");
     }
     foreach ($values as $k => $v) {
         $element = array_key_exists($k, $current) ? $current[$k] : Misc::deepClone($this->newelement);
         $element->setValue($v);
         $value->offsetSet($k, $element->getValue(FALSE));
         $this->subform->offsetSet($k, $element);
     }
     return parent::setValue($value);
 }
 public function testToArray()
 {
     $test["a"] = 1;
     $arrayobject = new ArrayObject($test);
     $this->assertSame($arrayobject->toArray(), ["a" => 1]);
     $test["b"] = new ArrayObject(["c" => 2]);
     $arrayobject = new ArrayObject($test);
     $this->assertSame($arrayobject->toArray(), ["a" => 1, "b" => ["c" => 2]]);
 }
Beispiel #4
0
 /**
  * Creates a new instance of a service
  *
  * @param $name The service name
  * @param array $config
  * @return Loops\Service\ServiceInterface The new service
  */
 public function createService($name, ArrayObject $config = NULL, $merge_into_config = FALSE)
 {
     if ($merge_into_config) {
         $service_config = $this->config->offsetExists($name) ? $this->config->offsetGet($name) : new ArrayObject();
         if (is_array($service_config)) {
             $service_config = ArrayObject::fromArray($service_config);
         }
         if ($config) {
             $service_config->merge($config);
         }
     } else {
         $service_config = $config ?: new ArrayObject();
     }
     if (!$this->hasService($name)) {
         throw new Exception("Service '{$name}' does not exist.");
     }
     $service = $this->services[$name];
     if (array_key_exists("classname", $service)) {
         $reflection = new ReflectionClass($service["classname"]);
         $params = new ArrayObject($service["params"]);
         $params->merge($service_config);
         if ($reflection->implementsInterface("Loops\\ServiceInterface")) {
             return call_user_func_array([$service["classname"], "getService"], [$params, $this]);
         } else {
             $params->offsetSet("loops", $this);
             return Misc::reflectionInstance($service["classname"], $params);
         }
     }
     if (array_key_exists("callback", $service)) {
         $params = new ArrayObject($service["params"]);
         $params->merge($service_config);
         return call_user_func_array($service["callback"], $params->toArray());
     }
     if (array_key_exists("object", $service)) {
         return $service["object"];
     }
 }
Beispiel #5
0
 function testFormValue()
 {
     $app = new WebApplication(__DIR__ . "/app", "/");
     $value = new ArrayObject(["test" => "123abc"]);
     $form = new SimpleTestForm($value);
     $formvalue = $form->getFormValue();
     $this->assertInstanceOf("Loops\\Form\\Value", $formvalue);
     $this->assertSame($value->toArray(), $formvalue->toArray());
     $this->assertSame($form, $formvalue->getForm());
 }