yii\apidoc\models\Context::updateReferences PHP Method

updateReferences() public method

Updates references
public updateReferences ( )
    public function updateReferences()
    {
        // update all subclass references
        foreach ($this->classes as $class) {
            $className = $class->name;
            while (isset($this->classes[$class->parentClass])) {
                $class = $this->classes[$class->parentClass];
                $class->subclasses[] = $className;
            }
        }
        // update interfaces of subclasses
        foreach ($this->classes as $class) {
            $this->updateSubclassInterfacesTraits($class);
        }
        // update implementedBy and usedBy for interfaces and traits
        foreach ($this->classes as $class) {
            foreach ($class->traits as $trait) {
                if (isset($this->traits[$trait])) {
                    $trait = $this->traits[$trait];
                    $trait->usedBy[] = $class->name;
                    $class->properties = array_merge($trait->properties, $class->properties);
                    $class->methods = array_merge($trait->methods, $class->methods);
                }
            }
            foreach ($class->interfaces as $interface) {
                if (isset($this->interfaces[$interface])) {
                    $this->interfaces[$interface]->implementedBy[] = $class->name;
                    if ($class->isAbstract) {
                        // add not implemented interface methods
                        foreach ($this->interfaces[$interface]->methods as $method) {
                            if (!isset($class->methods[$method->name])) {
                                $class->methods[$method->name] = $method;
                            }
                        }
                    }
                }
            }
        }
        foreach ($this->interfaces as $interface) {
            foreach ($interface->parentInterfaces as $pInterface) {
                if (isset($this->interfaces[$pInterface])) {
                    $this->interfaces[$pInterface]->implementedBy[] = $interface->name;
                }
            }
        }
        // inherit docs
        foreach ($this->classes as $class) {
            $this->inheritDocs($class);
        }
        // inherit properties, methods, contants and events to subclasses
        foreach ($this->classes as $class) {
            $this->updateSubclassInheritance($class);
        }
        foreach ($this->interfaces as $interface) {
            $this->updateSubInterfaceInheritance($interface);
        }
        // add properties from getters and setters
        foreach ($this->classes as $class) {
            $this->handlePropertyFeature($class);
        }
        // TODO reference exceptions to methods where they are thrown
    }

Usage Example

示例#1
0
 /**
  * @param Context $context
  */
 protected function updateContext($context)
 {
     $this->stdout('Updating cross references and backlinks... ');
     $context->updateReferences();
     $this->stdout('done.' . PHP_EOL, Console::FG_GREEN);
 }