-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAbstractAnnotation.php
More file actions
58 lines (46 loc) · 1.82 KB
/
Copy pathAbstractAnnotation.php
File metadata and controls
58 lines (46 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php declare(strict_types = 1);
/**
* This file is part of ScaleUpStack/Annotations.
*
* For the full copyright and license information, please view the README.md and LICENSE.md files that were distributed
* with this source code.
*
* @copyright 2019 - present ScaleUpVentures GmbH, https://www.scaleupventures.com
* @link https://github.com/scaleupstack/annotations
*/
namespace ScaleUpStack\Annotations\Annotation;
use ScaleUpStack\Annotations\Assert;
abstract class AbstractAnnotation implements AnnotationInterface
{
const PATTERN_DATA_TYPE = '\\\\?' . // optional leading backslash
'(' . // namespace 0..*
'[a-zA-Z_]' . '[a-zA-Z0-9_]*' . '\\\\' . // <letter, or underscore><letter, digit, or underscore>*<backslash>
')*' .
'[a-zA-Z_]' . '[a-zA-Z0-9_]*' . // <letter, or underscore><letter, digit, or underscore>*
'(\[\])?'; // optional []
const PATTERN_VARIABLE_NAME = '\\$([a-zA-Z_][a-zA-Z0-9_]*)'; // $<letter, or underscore><letter, digit, or underscore>*
const PATTERN_METHOD_NAME = '([a-zA-Z_][a-zA-Z0-9_]*)'; // <letter, or underscore><letter, digit, or underscore>*
private $tag;
private $arguments;
public function __construct(string $tag, string $arguments)
{
$this->tag = $tag;
$this->arguments = $arguments;
}
public function tag() : string
{
return $this->tag;
}
public function arguments() : string
{
return $this->arguments;
}
protected function validateTag(string $givenTag, string $expetedTag) : void
{
Assert::same(
$expetedTag,
$givenTag,
'The tag of the annotation must be %1$s, but %2$s given.'
);
}
}