PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.1.4
Admin Columns v7.1.4
7.1.4 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 4 days ago SpecificationFactory 4 days ago AggregateSpecification.php 4 days ago AndSpecification.php 4 days ago CollectionOperators.php 4 days ago CollectionSpecification.php 4 days ago ComparisonOperators.php 4 days ago ComparisonSpecification.php 4 days ago CompositeSpecification.php 4 days ago ContainsSpecification.php 4 days ago Context.php 4 days ago ContextAwareSpecification.php 4 days ago DateComparisonSpecification.php 4 days ago DateOperators.php 4 days ago DateRangeSpecification.php 4 days ago DateRelativeDaysSpecification.php 4 days ago DateRelativeDeductedSpecification.php 4 days ago DateSpecification.php 4 days ago DateTimeFactory.php 4 days ago DateTrait.php 4 days ago EndsWithSpecification.php 4 days ago FactSpecification.php 4 days ago FactTrait.php 4 days ago FloatComparisonSpecification.php 4 days ago FloatRangeSpecification.php 4 days ago IntegerComparisonSpecification.php 4 days ago IntegerRangeSpecification.php 4 days ago NotSpecification.php 4 days ago NullSpecification.php 4 days ago OperatorExpression.php 4 days ago OrSpecification.php 4 days ago RangeOperators.php 4 days ago RangeSpecification.php 4 days ago Specification.php 4 days ago SpecificationFactory.php 4 days ago StartsWithSpecification.php 4 days ago StringComparisonSpecification.php 4 days ago StringMatchSpecification.php 4 days ago StringOperators.php 4 days ago Type.php 4 days ago TypeSpecification.php 4 days ago TypeTrait.php 4 days ago Types.php 4 days 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 public const SPECIFICATION = 'specification';
12
13 abstract public function is_satisfied_by($value): bool;
14
15 public function and_specification(Specification $specification): self
16 {
17 return new AndSpecification([$this, $specification]);
18 }
19
20 public function or_specification(Specification $specification): self
21 {
22 return new OrSpecification([$this, $specification]);
23 }
24
25 public function not(): self
26 {
27 return new NotSpecification($this);
28 }
29
30 public function export(): array
31 {
32 return [
33 self::SPECIFICATION => $this->get_specification(),
34 ];
35 }
36
37 protected function get_specification(): string
38 {
39 $specification = strtolower(
40 preg_replace(
41 '/(?<!^)[A-Z]/',
42 '_$0',
43 (new ReflectionClass($this))->getShortName()
44 ) ?? ''
45 );
46
47 $needle = '_specification';
48
49 if (str_ends_with($specification, $needle)) {
50 $specification = substr($specification, 0, -strlen($needle));
51 }
52
53 return $specification;
54 }
55
56 }
57