Skip to content
Snippets Groups Projects
ParametersTrait.php 1.58 KiB
Newer Older
ONGR Team's avatar
ONGR Team committed
<?php

/*
 * This file is part of the ONGR package.
 *
 * (c) NFQ Technologies UAB <info@nfq.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace ONGR\ElasticsearchDSL;
ONGR Team's avatar
ONGR Team committed

/**
 * A trait which handles the behavior of parameters in queries, filters, etc.
 */
trait ParametersTrait
{
Denis Urban's avatar
Denis Urban committed
    private array $parameters = [];
ONGR Team's avatar
ONGR Team committed

    /**
     * Removes parameter.
     */
Denis Urban's avatar
Denis Urban committed
    public function removeParameter(string $name): static
    {
        if ($this->hasParameter($name)) {
            unset($this->parameters[$name]);
        }
Denis Urban's avatar
Denis Urban committed

        return $this;
Denis Urban's avatar
Denis Urban committed
    /**
     * Checks if parameter exists.
     */
    public function hasParameter(string $name): bool
    {
        return isset($this->parameters[$name]);
    }

ONGR Team's avatar
ONGR Team committed
    /**
     * Returns one parameter by it's name.
     */
Denis Urban's avatar
Denis Urban committed
    public function getParameter(string $name): mixed
ONGR Team's avatar
ONGR Team committed
    {
Denis Urban's avatar
Denis Urban committed
        return $this->parameters[$name] ?? null;
ONGR Team's avatar
ONGR Team committed
    }

    /**
     * Returns an array of all parameters.
     */
Denis Urban's avatar
Denis Urban committed
    public function getParameters(): array
ONGR Team's avatar
ONGR Team committed
    {
        return $this->parameters;
    }

Denis Urban's avatar
Denis Urban committed
    public function setParameters(array $parameters): static
ONGR Team's avatar
ONGR Team committed
    {
        $this->parameters = $parameters;
ONGR Team's avatar
ONGR Team committed
    }

Denis Urban's avatar
Denis Urban committed
    public function addParameter(string $name, mixed $value): static
Denis Urban's avatar
Denis Urban committed
    {
        $this->parameters[$name] = $value;
Denis Urban's avatar
Denis Urban committed

        return $this;
Denis Urban's avatar
Denis Urban committed
    }

ONGR Team's avatar
ONGR Team committed
    /**
     * Returns given array merged with parameters.
     */
Denis Urban's avatar
Denis Urban committed
    protected function processArray(array $array = []): array
ONGR Team's avatar
ONGR Team committed
    {
        return array_merge($array, $this->parameters);
    }
}