CollectRelationshipMetaEvent.php

Namespace

Drupal\jsonapi\Events

File

core/modules/jsonapi/src/Events/CollectRelationshipMetaEvent.php

View source
<?php

declare (strict_types=1);
namespace Drupal\jsonapi\Events;

use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
use Drupal\Core\Cache\RefinableCacheableDependencyTrait;
use Drupal\jsonapi\JsonApiResource\ResourceObject;
use Drupal\Component\EventDispatcher\Event;

/**
 * Event for collecting the relationship metadata of a JSON:API resource object.
 *
 * Subscribers of this event that call ::setMetaValue() must set the appropriate
 * cache tags and contexts. These should be based on the data that is used to set
 * the meta. These will then bubble up to the normalization.
 *
 * @Event
 */
final class CollectRelationshipMetaEvent extends Event implements RefinableCacheableDependencyInterface {
    use RefinableCacheableDependencyTrait;
    
    /**
     * The metadata.
     *
     * @var array
     */
    private array $meta = [];
    
    /**
     * Constructs a new CollectRelationshipMetaEvent object.
     *
     * @param \Drupal\jsonapi\JsonApiResource\ResourceObject $resourceObject
     *   The resource object.
     * @param string $relationshipFieldName
     *   The relationship field name.
     */
    public function __construct(ResourceObject $resourceObject, string $relationshipFieldName) {
    }
    
    /**
     * Gets the resource object.
     *
     * @return \Drupal\jsonapi\JsonApiResource\ResourceObject
     *   The resource object.
     */
    public function getResourceObject() : ResourceObject {
        return $this->resourceObject;
    }
    
    /**
     * Gets the relationship field.
     *
     * @return string
     *   The relationship field name.
     */
    public function getRelationshipFieldName() : string {
        return $this->relationshipFieldName;
    }
    
    /**
     * Gets the meta values.
     *
     * @return array
     *   The meta.
     */
    public function getMeta() : array {
        return $this->meta;
    }
    
    /**
     * Sets a meta value.
     *
     * @param array|string $property
     *   The key or array of keys.
     * @param mixed $value
     *   The value.
     *
     * @return $this
     */
    public function setMetaValue(array|string $property, mixed $value) : self {
        NestedArray::setValue($this->meta, (array) $property, $value, TRUE);
        return $this;
    }

}

Classes

Title Deprecated Summary
CollectRelationshipMetaEvent Event for collecting the relationship metadata of a JSON:API resource object.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.