‪TYPO3CMS  ‪main
VariablesContext.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
21 {
23 
27  private array ‪$requiredApplicables = [];
28 
29  public static function ‪create(‪Variables ‪$variables): self
30  {
31  return new static(‪$variables);
32  }
33 
35  {
36  $this->variables = ‪$variables;
37  }
38 
39  public function ‪getVariables(): ‪Variables
40  {
41  return ‪$this->variables;
42  }
43 
44  public function ‪matchesRequiredApplicables(‪Applicable ...$applicables): bool
45  {
46  if ($this->requiredApplicables === []) {
47  return true;
48  }
49  $missingApplicables = array_udiff(
50  $this->requiredApplicables,
51  $applicables,
52  [$this, 'compareApplicables']
53  );
54  return count($missingApplicables) === 0;
55  }
56 
58  {
59  $target = clone $this;
60  $target->requiredApplicables = ‪$requiredApplicables;
61  return $target;
62  }
63 
64  public function ‪describe(): string
65  {
66  $items = [];
67  foreach ($this->variables->getArrayCopy() as $key => $value) {
68  $items[] = sprintf('$%s=%s', $key, $this->‪asHumanReadable($value));
69  }
70  return implode(', ', $items);
71  }
72 
73  private function ‪asHumanReadable($value): string
74  {
75  if ($value === null) {
76  return '<null>';
77  }
78  if ($value === '') {
79  return '<empty>';
80  }
81  return (string)$value;
82  }
83 
84  private function ‪compareApplicables(‪Applicable $a, ‪Applicable $b): int
85  {
86  if ($a === $b) {
87  return 0;
88  }
89  return 1;
90  }
91 }
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariablesContext\$requiredApplicables
‪array $requiredApplicables
Definition: VariablesContext.php:27
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Variables
Definition: Variables.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariablesContext\$variables
‪Variables $variables
Definition: VariablesContext.php:22
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariablesContext\create
‪static create(Variables $variables)
Definition: VariablesContext.php:29
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariablesContext
Definition: VariablesContext.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariablesContext\getVariables
‪getVariables()
Definition: VariablesContext.php:39
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariablesContext\matchesRequiredApplicables
‪matchesRequiredApplicables(Applicable ... $applicables)
Definition: VariablesContext.php:44
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Applicable
Definition: Applicable.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariablesContext\describe
‪describe()
Definition: VariablesContext.php:64
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariablesContext\asHumanReadable
‪asHumanReadable($value)
Definition: VariablesContext.php:73
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder
Definition: Applicable.php:18
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariablesContext\__construct
‪__construct(Variables $variables)
Definition: VariablesContext.php:34
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariablesContext\compareApplicables
‪compareApplicables(Applicable $a, Applicable $b)
Definition: VariablesContext.php:84
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariablesContext\withRequiredApplicables
‪withRequiredApplicables(Applicable ... $requiredApplicables)
Definition: VariablesContext.php:57