Exemplo n.º 1
0
 public function testGetManager()
 {
     $resource = new Item(array('foo' => 'bar'), function () {
     });
     $scope = new Scope(new Manager(), $resource, 'book');
     $this->assertInstanceOf('League\\Fractal\\Manager', $scope->getManager());
 }
 protected function callIncludeMethod(Scope $scope, $includeName, $data)
 {
     $scopeIdentifier = $scope->getIdentifier($includeName);
     $params = $scope->getManager()->getIncludeParams($scopeIdentifier);
     // Check if the method name actually exists
     $methodName = 'include' . str_replace(' ', '', ucwords(str_replace('_', ' ', str_replace('-', '', $includeName))));
     $resource = call_user_func(array($this, $methodName), $data, $params);
     if ($resource === null) {
         return false;
     }
     if (!$resource instanceof ResourceAbstract) {
         throw new \Exception(sprintf('Invalid return value from %s::%s(). Expected %s, received %s.', __CLASS__, $methodName, 'League\\Fractal\\Resource\\ResourceAbstract', gettype($resource)));
     }
     return $resource;
 }
Exemplo n.º 3
0
 /**
  * Call method for retrieving a relation. This method overrides Fractal's own
  * [callIncludeMethod] method to load relations directly from your models.
  *
  * @param  Scope  $scope
  * @param  string $includeName
  * @param  mixed  $data
  * @return \League\Fractal\Resource\ResourceInterface|bool
  * @throws \Exception
  */
 protected function callIncludeMethod(Scope $scope, $includeName, $data)
 {
     if ($includeName === 'pivot') {
         return $this->includePivot($data->{$includeName});
     }
     $params = $scope->getManager()->getIncludeParams($scope->getIdentifier($includeName));
     if (method_exists($this, $includeName)) {
         $include = call_user_func([$this, $includeName], $data, $params);
         if ($include instanceof ResourceAbstract) {
             return $include;
         }
         return app(Responder::class)->transform($include)->getResource();
     } else {
         return app(Responder::class)->transform($data->{$includeName})->getResource();
     }
 }