File: DocBlockProperty.php

package info (click to toggle)
dokuwiki 2024-02-06b%2Bdfsg-9
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 24,624 kB
  • sloc: php: 97,851; javascript: 3,724; sh: 599; makefile: 70; xml: 34
file content (50 lines) | stat: -rw-r--r-- 1,117 bytes parent folder | download | duplicates (5)
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
<?php

namespace dokuwiki\Remote\OpenApiDoc;

class DocBlockProperty extends DocBlock
{
    /** @var Type */
    protected $type;

    /**
     * Parse the given docblock
     *
     * The docblock can be of a method, class or property.
     *
     * @param \ReflectionProperty $reflector
     */
    public function __construct(\ReflectionProperty $reflector)
    {
        parent::__construct($reflector);
        $this->refineVar();
    }

    /**
     * The Type of this property
     *
     * @return Type
     */
    public function getType()
    {
        return $this->type;
    }

    /**
     * Parse the var tag into its components
     *
     * @return void
     */
    protected function refineVar()
    {
        $refType = $this->reflector->getType();
        $this->type = new Type($refType ? $refType->getName() : 'string', $this->getContext());


        if (!isset($this->tags['var'])) return;

        [$type, $description] = array_map('trim', sexplode(' ', $this->tags['var'][0], 2, ''));
        $this->type = new Type($type, $this->getContext());
        $this->summary = $description;
    }
}