You are here

class ResourceTypeRelationship in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/jsonapi/src/ResourceType/ResourceTypeRelationship.php \Drupal\jsonapi\ResourceType\ResourceTypeRelationship
  2. 9 core/modules/jsonapi/src/ResourceType/ResourceTypeRelationship.php \Drupal\jsonapi\ResourceType\ResourceTypeRelationship

Specialization of a ResourceTypeField to represent a resource relationship.

@internal JSON:API maintains no PHP API since its API is the HTTP API. This class may change at any time and this will break any dependencies on it.

Hierarchy

Expanded class hierarchy of ResourceTypeRelationship

See also

https://www.drupal.org/project/drupal/issues/3032787

jsonapi.api.php

\Drupal\jsonapi\ResourceType\ResourceTypeRepository

3 files declare their use of ResourceTypeRelationship
FieldResolver.php in core/modules/jsonapi/src/Context/FieldResolver.php
ResourceIdentifierNormalizerTest.php in core/modules/jsonapi/tests/src/Unit/Normalizer/ResourceIdentifierNormalizerTest.php
RoutesTest.php in core/modules/jsonapi/tests/src/Unit/Routing/RoutesTest.php

File

core/modules/jsonapi/src/ResourceType/ResourceTypeRelationship.php, line 16

Namespace

Drupal\jsonapi\ResourceType
View source
class ResourceTypeRelationship extends ResourceTypeField {

  /**
   * The resource type to which this relationships can relate.
   *
   * @var \Drupal\jsonapi\ResourceType\ResourceType[]
   */
  protected $relatableResourceTypes;

  /**
   * Establishes the relatable resource types of this field.
   *
   * @param array $resource_types
   *   The array of relatable resource types.
   *
   * @return static
   *   A new instance of the field with the given relatable resource types.
   */
  public function withRelatableResourceTypes(array $resource_types) {
    $relationship = new static($this->internalName, $this->publicName, $this->enabled, $this->hasOne);
    $relationship->relatableResourceTypes = $resource_types;
    return $relationship;
  }

  /**
   * Gets the relatable resource types.
   *
   * @return \Drupal\jsonapi\ResourceType\ResourceType[]
   *   The resource type to which this relationships can relate.
   */
  public function getRelatableResourceTypes() {
    if (!isset($this->relatableResourceTypes)) {
      throw new \LogicException("withRelatableResourceTypes() must be called before getting relatable resource types.");
    }
    return $this->relatableResourceTypes;
  }

  /**
   * {@inheritdoc}
   */
  public function withPublicName($public_name) {
    $relationship = parent::withPublicName($public_name);
    return isset($this->relatableResourceTypes) ? $relationship
      ->withRelatableResourceTypes($this->relatableResourceTypes) : $relationship;
  }

  /**
   * {@inheritdoc}
   */
  public function disabled() {
    $relationship = parent::disabled();
    return isset($this->relatableResourceTypes) ? $relationship
      ->withRelatableResourceTypes($this->relatableResourceTypes) : $relationship;
  }

}

Members