PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.0.13
Admin Columns v7.0.13
7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / Expression / Specification.php
codepress-admin-columns / classes / Expression Last commit date
Exception 3 months ago SpecificationFactory 3 months ago AggregateSpecification.php 3 months ago AndSpecification.php 3 months ago CollectionOperators.php 3 months ago CollectionSpecification.php 3 months ago ComparisonOperators.php 3 months ago ComparisonSpecification.php 3 months ago CompositeSpecification.php 3 months ago ContainsSpecification.php 3 months ago Context.php 3 months ago ContextAwareSpecification.php 3 months ago DateComparisonSpecification.php 3 months ago DateOperators.php 3 months ago DateRangeSpecification.php 3 months ago DateRelativeDaysSpecification.php 3 months ago DateRelativeDeductedSpecification.php 3 months ago DateSpecification.php 3 months ago DateTimeFactory.php 3 months ago DateTrait.php 3 months ago EndsWithSpecification.php 3 months ago FactSpecification.php 3 months ago FactTrait.php 3 months ago FloatComparisonSpecification.php 3 months ago FloatRangeSpecification.php 3 months ago IntegerComparisonSpecification.php 3 months ago IntegerRangeSpecification.php 3 months ago NotSpecification.php 3 months ago NullSpecification.php 3 months ago OperatorExpression.php 3 months ago OrSpecification.php 3 months ago RangeOperators.php 3 months ago RangeSpecification.php 3 months ago Specification.php 3 months ago SpecificationFactory.php 3 months ago StartsWithSpecification.php 3 months ago StringComparisonSpecification.php 3 months ago StringMatchSpecification.php 3 months ago StringOperators.php 3 months ago TypeSpecification.php 3 months ago TypeTrait.php 3 months ago Types.php 3 months ago
Specification.php
57 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Expression;
6
7 use ReflectionClass;
8
9 abstract class Specification
10 {
11
12 public const SPECIFICATION = 'specification';
13
14 abstract public function is_satisfied_by($value): bool;
15
16 public function and_specification(Specification $specification): self
17 {
18 return new AndSpecification([$this, $specification]);
19 }
20
21 public function or_specification(Specification $specification): self
22 {
23 return new OrSpecification([$this, $specification]);
24 }
25
26 public function not(): self
27 {
28 return new NotSpecification($this);
29 }
30
31 public function export(): array
32 {
33 return [
34 self::SPECIFICATION => $this->get_specification(),
35 ];
36 }
37
38 protected function get_specification(): string
39 {
40 $specification = strtolower(
41 preg_replace(
42 '/(?<!^)[A-Z]/',
43 '_$0',
44 (new ReflectionClass($this))->getShortName()
45 )
46 );
47
48 $needle = '_specification';
49
50 if (str_ends_with($specification, $needle)) {
51 $specification = substr($specification, 0, -strlen($needle));
52 }
53
54 return $specification;
55 }
56
57 }