• File: Option.php
  • Full Path: /home/bravrvjk/itiministry.org/wp-content/plugins/give/src/Framework/FieldsAPI/Option.php
  • Date Modified: 01/11/2024 12:22 AM
  • File size: 1.1 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

namespace Give\Framework\FieldsAPI;

use JsonSerializable;

/**
 * Class Option
 *
 * @since 2.12.0
 */
class Option implements JsonSerializable
{

    use Concerns\HasLabel;

    /** @var string */
    protected $value;

    /**
     * @since 2.23.1 Make constructor final to avoid unsafe usage of `new static()`.
     *
     * @param string  $value
     * @param ?string $label
     */
    final public function __construct($value, $label = null)
    {
        $this->value = $value;
        $this->label = $label;
    }

    /**
     * Create a new option.
     *
     * @since 2.12.0
     *
     * @return static
     */
    public static function make(...$args)
    {
        return new static(...$args);
    }

    /**
     * Access the value
     *
     * @since 2.12.0
     *
     * @return string
     */
    public function getValue()
    {
        return $this->value;
    }

    /**
     * {@inheritdoc}
     */
    #[\ReturnTypeWillChange]
    public function jsonSerialize()
    {
        return [
            'value' => $this->getValue(),
            'label' => $this->getLabel(),
        ];
    }
}