[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/inc/Remote/OpenApiDoc/ -> DocBlockClass.php (source)

   1  <?php
   2  
   3  namespace dokuwiki\Remote\OpenApiDoc;
   4  
   5  use ReflectionClass;
   6  
   7  class DocBlockClass extends DocBlock
   8  {
   9      /** @var DocBlockMethod[] */
  10      protected $methods = [];
  11  
  12      /** @var DocBlockProperty[] */
  13      protected $properties = [];
  14  
  15      /**
  16       * Parse the given docblock
  17       *
  18       * The docblock can be of a method, class or property.
  19       *
  20       * @param ReflectionClass $reflector
  21       */
  22      public function __construct(ReflectionClass $reflector)
  23      {
  24          parent::__construct($reflector);
  25      }
  26  
  27      /** @inheritdoc */
  28      protected function getContext()
  29      {
  30          return $this->reflector->getName();
  31      }
  32  
  33      /**
  34       * Get the public methods of this class
  35       *
  36       * @return DocBlockMethod[]
  37       */
  38      public function getMethodDocs()
  39      {
  40          if ($this->methods) return $this->methods;
  41  
  42          foreach ($this->reflector->getMethods() as $method) {
  43              /** @var \ReflectionMethod $method */
  44              if ($method->isConstructor()) continue;
  45              if ($method->isDestructor()) continue;
  46              if (!$method->isPublic()) continue;
  47              $this->methods[$method->getName()] = new DocBlockMethod($method);
  48          }
  49  
  50          return $this->methods;
  51      }
  52  
  53      /**
  54       * Get the public properties of this class
  55       *
  56       * @return DocBlockProperty[]
  57       */
  58      public function getPropertyDocs()
  59      {
  60          if ($this->properties) return $this->properties;
  61  
  62          foreach ($this->reflector->getProperties() as $property) {
  63              /** @var \ReflectionProperty $property */
  64              if (!$property->isPublic()) continue;
  65              $this->properties[$property->getName()] = new DocBlockProperty($property);
  66          }
  67  
  68          return $this->properties;
  69      }
  70  }