| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 | <?php/** * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ */namespace yii\apidoc\models;/** * Represents API documentation information for a `class`. * * @property EventDoc[] $nativeEvents This property is read-only. * * @author Carsten Brandt <mail@cebe.cc> * @since 2.0 */class ClassDoc extends TypeDoc{    public $parentClass;    public $isAbstract;    public $isFinal;    /**     * @var string[]     */    public $interfaces = [];    public $traits = [];    // will be set by Context::updateReferences()    public $subclasses = [];    /**     * @var EventDoc[]     */    public $events = [];    /**     * @var ConstDoc[]     */    public $constants = [];    /**     * @inheritdoc     */    public function findSubject($subjectName)    {        if (($subject = parent::findSubject($subjectName)) !== null) {            return $subject;        }        foreach ($this->events as $name => $event) {            if ($subjectName == $name) {                return $event;            }        }        foreach ($this->constants as $name => $constant) {            if ($subjectName == $name) {                return $constant;            }        }        return null;    }    /**     * @return EventDoc[]     */    public function getNativeEvents()    {        $events = [];        foreach ($this->events as $name => $event) {            if ($event->definedBy != $this->name) {                continue;            }            $events[$name] = $event;        }        return $events;    }    /**     * @inheritdoc     */    public function __construct($reflector = null, $context = null, $config = [])    {        parent::__construct($reflector, $context, $config);        if ($reflector === null) {            return;        }        $this->parentClass = ltrim($reflector->getParentClass(), '\\');        if (empty($this->parentClass)) {            $this->parentClass = null;        }        $this->isAbstract = $reflector->isAbstract();        $this->isFinal = $reflector->isFinal();        foreach ($reflector->getInterfaces() as $interface) {            $this->interfaces[] = ltrim($interface, '\\');        }        foreach ($reflector->getTraits() as $trait) {            $this->traits[] = ltrim($trait, '\\');        }        foreach ($reflector->getConstants() as $constantReflector) {            $docblock = $constantReflector->getDocBlock();            if ($docblock !== null && count($docblock->getTagsByName('event')) > 0) {                $event = new EventDoc($constantReflector);                $event->definedBy = $this->name;                $this->events[$event->name] = $event;            } else {                $constant = new ConstDoc($constantReflector);                $constant->definedBy = $this->name;                $this->constants[$constant->name] = $constant;            }        }    }}
 |