# give/4.16.8.1/src/Framework/FieldsAPI/ValueObjects/PersistenceScope.php

GiveWP – Donation Plugin and Fundraising Platform, version 4.16.8.1. 118 lines.

- Page: https://pluginprobe.com/plugins/give/4.16.8.1/code/src/Framework/FieldsAPI/ValueObjects/PersistenceScope.php
- Raw: https://pluginprobe.com/plugins/give/4.16.8.1/raw/src/Framework/FieldsAPI/ValueObjects/PersistenceScope.php
- Modified: 2023-10-16T17:55:46+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/give/4.16.8.1/code/src/Framework/FieldsAPI/ValueObjects/PersistenceScope.php#L10-L20`.

```php
<?php

namespace Give\Framework\FieldsAPI\ValueObjects;

/**
 * The scope of the field for use in persistence. The two built-in scopes are donation and donor, but the scope may be
 * any custom string. Using a custom scope allows for an add-on to either not store the field, or store it in a custom
 * location.
 *
 * @since 2.32.0
 */
class PersistenceScope
{
    public const DONATION = 'donation';
    public const SUBSCRIPTION = 'subscription';
    public const DONOR = 'donor';
    public const CALLBACK = 'callback';

    /**
     * @var string
     */
    private $scope;

    /**
     * @since 2.32.0
     */
    public static function donation(): self
    {
        return new self(self::DONATION);
    }

    /**
     * @since 2.32.0
     */
    public static function donor(): self
    {
        return new self(self::DONOR);
    }

    /**
     * @since 3.0.0
     */
    public static function subscription(): self
    {
        return new self(self::SUBSCRIPTION);
    }

    /**
     * @since 2.32.0
     */
    public static function callback(): self
    {
        return new self(self::CALLBACK);
    }

    /**
     * @since 2.32.0
     */
    public function __construct(string $scope)
    {
        $this->scope = $scope;
    }

    /**
     * @since 2.32.0
     */
    public function isDonation(): bool
    {
        return $this->scope === self::DONATION;
    }

    /**
     * @since 3.0.0
     */
    public function isSubscription(): bool
    {
        return $this->scope === self::SUBSCRIPTION;
    }

    /**
     * @since 2.32.0
     */
    public function isDonor(): bool
    {
        return $this->scope === self::DONOR;
    }

    /**
     * @since 2.32.0
     */
    public function isCallback(): bool
    {
        return $this->scope === self::CALLBACK;
    }

    /**
     * @since 2.32.0
     *
     * @param self|string $scope
     */
    public function is($scope): bool
    {
        if ($scope instanceof self) {
            $scope = $scope->scope;
        }

        return $this->scope === $scope;
    }

    /**
     * @since 2.32.0
     */
    public function __toString()
    {
        return $this->scope;
    }
}

```
