From bf6655a534a6775d30cafa67bd801276bda1d98d Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 13 Aug 2024 23:45:21 +0200 Subject: =?UTF-8?q?VERSION=200.2=20doctrine=20ORM=20et=20entit=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vendor/doctrine/collections/src/Criteria.php | 285 +++++++++++++++++++++++++++ 1 file changed, 285 insertions(+) create mode 100644 vendor/doctrine/collections/src/Criteria.php (limited to 'vendor/doctrine/collections/src/Criteria.php') diff --git a/vendor/doctrine/collections/src/Criteria.php b/vendor/doctrine/collections/src/Criteria.php new file mode 100644 index 0000000..4c8a0a7 --- /dev/null +++ b/vendor/doctrine/collections/src/Criteria.php @@ -0,0 +1,285 @@ + */ + private array $orderings = []; + + private int|null $firstResult = null; + private int|null $maxResults = null; + + /** + * Creates an instance of the class. + * + * @return static + */ + public static function create() + { + return new static(); + } + + /** + * Returns the expression builder. + * + * @return ExpressionBuilder + */ + public static function expr() + { + if (self::$expressionBuilder === null) { + self::$expressionBuilder = new ExpressionBuilder(); + } + + return self::$expressionBuilder; + } + + /** + * Construct a new Criteria. + * + * @param array|null $orderings + */ + public function __construct( + private Expression|null $expression = null, + array|null $orderings = null, + int|null $firstResult = null, + int|null $maxResults = null, + ) { + $this->expression = $expression; + + if ($firstResult === null && func_num_args() > 2) { + Deprecation::trigger( + 'doctrine/collections', + 'https://github.com/doctrine/collections/pull/311', + 'Passing null as $firstResult to the constructor of %s is deprecated. Pass 0 instead or omit the argument.', + self::class, + ); + } + + $this->setFirstResult($firstResult); + $this->setMaxResults($maxResults); + + if ($orderings === null) { + return; + } + + $this->orderBy($orderings); + } + + /** + * Sets the where expression to evaluate when this Criteria is searched for. + * + * @return $this + */ + public function where(Expression $expression) + { + $this->expression = $expression; + + return $this; + } + + /** + * Appends the where expression to evaluate when this Criteria is searched for + * using an AND with previous expression. + * + * @return $this + */ + public function andWhere(Expression $expression) + { + if ($this->expression === null) { + return $this->where($expression); + } + + $this->expression = new CompositeExpression( + CompositeExpression::TYPE_AND, + [$this->expression, $expression], + ); + + return $this; + } + + /** + * Appends the where expression to evaluate when this Criteria is searched for + * using an OR with previous expression. + * + * @return $this + */ + public function orWhere(Expression $expression) + { + if ($this->expression === null) { + return $this->where($expression); + } + + $this->expression = new CompositeExpression( + CompositeExpression::TYPE_OR, + [$this->expression, $expression], + ); + + return $this; + } + + /** + * Gets the expression attached to this Criteria. + * + * @return Expression|null + */ + public function getWhereExpression() + { + return $this->expression; + } + + /** + * Gets the current orderings of this Criteria. + * + * @deprecated use orderings() instead + * + * @return array + */ + public function getOrderings() + { + Deprecation::trigger( + 'doctrine/collections', + 'https://github.com/doctrine/collections/pull/389', + 'Calling %s() is deprecated. Use %s::orderings() instead.', + __METHOD__, + self::class, + ); + + return array_map( + static fn (Order $ordering): string => $ordering->value, + $this->orderings, + ); + } + + /** + * Gets the current orderings of this Criteria. + * + * @return array + */ + public function orderings(): array + { + return $this->orderings; + } + + /** + * Sets the ordering of the result of this Criteria. + * + * Keys are field and values are the order, being a valid Order enum case. + * + * @see Order::Ascending + * @see Order::Descending + * + * @param array $orderings + * + * @return $this + */ + public function orderBy(array $orderings) + { + $method = __METHOD__; + $this->orderings = array_map( + static function (string|Order $ordering) use ($method): Order { + if ($ordering instanceof Order) { + return $ordering; + } + + static $triggered = false; + + if (! $triggered) { + Deprecation::trigger( + 'doctrine/collections', + 'https://github.com/doctrine/collections/pull/389', + 'Passing non-Order enum values to %s() is deprecated. Pass Order enum values instead.', + $method, + ); + } + + $triggered = true; + + return strtoupper($ordering) === Order::Ascending->value ? Order::Ascending : Order::Descending; + }, + $orderings, + ); + + return $this; + } + + /** + * Gets the current first result option of this Criteria. + * + * @return int|null + */ + public function getFirstResult() + { + return $this->firstResult; + } + + /** + * Set the number of first result that this Criteria should return. + * + * @param int|null $firstResult The value to set. + * + * @return $this + */ + public function setFirstResult(int|null $firstResult) + { + if ($firstResult === null) { + Deprecation::triggerIfCalledFromOutside( + 'doctrine/collections', + 'https://github.com/doctrine/collections/pull/311', + 'Passing null to %s() is deprecated, pass 0 instead.', + __METHOD__, + ); + } + + $this->firstResult = $firstResult; + + return $this; + } + + /** + * Gets maxResults. + * + * @return int|null + */ + public function getMaxResults() + { + return $this->maxResults; + } + + /** + * Sets maxResults. + * + * @param int|null $maxResults The value to set. + * + * @return $this + */ + public function setMaxResults(int|null $maxResults) + { + $this->maxResults = $maxResults; + + return $this; + } +} -- cgit v1.2.3