private function registerActionBindings($action, $actionData)
 {
     foreach ($action->getParameters() as $param) {
         if ($param->getClass()) {
             $className = $param->getClass()->name;
             $actionData['customRoute']['bindingParams'][$className] = [];
             $paramReflection = new \ReflectionClass($className);
             foreach ($paramReflection->getProperties() as $property) {
                 $propertyData = AnnotationParser::parseDoc($property->getDocComment(), $this->_propertyDataTemplate, 'property');
                 $actionData['customRoute']['bindingParams'][$className][$property->name] = $propertyData;
             }
         }
     }
     return $actionData;
 }
 private function registerControllersActions($areaName, $fullPath)
 {
     $class = new \ReflectionClass($fullPath);
     $actions = $class->getMethods();
     foreach ($actions as $action) {
         if (!$action->isPublic()) {
             continue;
         }
         $this->appStructure[$areaName][$fullPath][$action->name] = [];
         $realRoute = $this->getValidRouteUri($areaName, $fullPath, $action->name);
         $actionDoc = AnnotationParser::getActionDoc($action);
         if ($actionDoc) {
             $parsedDocsArray = AnnotationParser::parseActionDoc($actionDoc);
             if ($parsedDocsArray) {
                 $parsedDocsArray['defaultRoute'] = $realRoute;
                 $this->appStructure[$areaName][$fullPath][$action->name] = $parsedDocsArray;
                 $this->_actionsArray[$action->name] = $this->appStructure[$areaName][$fullPath][$action->name];
             }
         } else {
             $this->appStructure[$areaName][$fullPath][$action->name] = [];
             $this->_actionsArray[$action->name] = $this->appStructure[$areaName][$fullPath][$action->name];
         }
     }
 }