1: <?php declare(strict_types=1);
2:
3: namespace Salient\PHPDoc\Tag;
4:
5: /**
6: * @api
7: */
8: class VarTag extends AbstractTag
9: {
10: /**
11: * @internal
12: */
13: public function __construct(
14: string $type,
15: ?string $name = null,
16: ?string $description = null,
17: ?string $class = null,
18: ?string $member = null,
19: ?string $static = null,
20: ?string $self = null,
21: array $aliases = []
22: ) {
23: parent::__construct('var', $name, $type, $description, $class, $member, $static, $self, $aliases);
24: }
25:
26: /**
27: * @inheritDoc
28: */
29: public function getType(): string
30: {
31: return $this->Type;
32: }
33:
34: /**
35: * Get an instance with the given name
36: *
37: * @return static
38: */
39: public function withName(?string $name)
40: {
41: if ($name === null) {
42: return $this->without('Name');
43: }
44: return $this->with('Name', $this->filterString($name, 'name'));
45: }
46:
47: /**
48: * @inheritDoc
49: */
50: public function __toString(): string
51: {
52: $string = "@{$this->Tag} {$this->Type}";
53: if (isset($this->Name)) {
54: $string .= " \${$this->Name}";
55: }
56: if ($this->Description !== null) {
57: $string .= " {$this->Description}";
58: }
59: return $string;
60: }
61: }
62: