コード例 #1
0
ファイル: Serializer.php プロジェクト: linkorb/primate
 public function serializeResource(Resource $resource)
 {
     $data['id'] = $resource->getId();
     $data['_type'] = $resource->getType()->getName();
     $data['href'] = $this->primate->getBaseUrl() . '/' . $resource->getType()->getName() . '/' . $resource->getId();
     foreach ($resource->getProperties() as $name => $value) {
         switch (gettype($value)) {
             case 'array':
                 $data[$name] = '[]';
                 break;
             case 'object':
                 if (is_subclass_of($value, '\\Primate\\ResourceInterface')) {
                     $data[$name] = $this->serializeResource($value);
                 } else {
                     $data[$name] = '???';
                 }
                 break;
             default:
                 $data[$name] = $value;
                 break;
         }
     }
     return $data;
 }
コード例 #2
0
ファイル: Primate.php プロジェクト: linkorb/primate
 public function loadResource(Resource $resource, $expands = [])
 {
     $repo = $resource->getType()->getRepository();
     $resources = [$resource];
     $repo->loadResources($resources, $this);
     foreach ($resource->getProperties() as $key => $value) {
         if (in_array($key, $expands)) {
             foreach ($expands as $expand) {
                 $subExpands = [];
                 if (substr($expand, 0, strlen($key) + 1) == $key . '.') {
                     $subExpands[] = substr($expand, strlen($key) + 1);
                 }
             }
             $subResource = $resource->getProperty($key);
             $this->loadResource($subResource, $subExpands);
         }
     }
     return $resource;
 }
コード例 #3
0
ファイル: ResourceLoader.php プロジェクト: bangpound/console
 /**
  * Returns the loader for a resource.
  *
  * @param Resource $resource The resource.
  *
  * @return LoaderInterface|null The resource loader.
  */
 public function resolve(Resource $resource)
 {
     if ($resource instanceof ResourceSupport) {
         $loader = $this->resolver->resolve($resource->getSupportResource(), $resource->getSupportType());
     } else {
         $loader = $this->resolver->resolve($resource->getResource(), $resource->getType());
     }
     return false === $loader ? null : $loader;
 }