示例#1
0
 public function getEntries(Project $project, Context $context)
 {
     list($type, $isThis, $types, $workingNode) = $context->getData();
     // @see Plugin::handleCompleteEvent
     $workingNode = $this->helper->findStaticCallNode($workingNode);
     $methodName = $workingNode->name;
     switch ($methodName) {
         case 'helper':
             return $this->handleType(MageAdapter::TYPE_HELPER);
         case 'getSingleton':
             //Mage::getSingleton()
             //no break;
         //Mage::getSingleton()
         //no break;
         case 'getModel':
             //Mage::gerModel()
             return $this->handleModel();
         case 'getResourceModel':
             //Mage::gerResourceModel()
             return $this->handleType(MageAdapter::TYPE_RESURCE_MODEL);
         case 'getStoreConfig':
             //Mage::getStoreConfig()
             //no break;
         //Mage::getStoreConfig()
         //no break;
         case 'getStoreConfigFlag':
             //Mage::getStoreConfigFlag()
             //not implemented yet!
             break;
     }
     return [];
 }
示例#2
0
 protected function createContext(Scope $scope, Token $token, $badLine, Index $index)
 {
     $context = new Context($scope, $token);
     $nodes = $this->parser->parse($this->prepareLine($badLine));
     if ($token->isObjectOperator() || $token->isStaticOperator() || $token->isMethodCall()) {
         if (is_array($nodes)) {
             $workingNode = array_pop($nodes);
         } else {
             $workingNode = $nodes;
         }
         $isThis = false;
         if ($workingNode instanceof Variable && $workingNode->name === 'this') {
             $isThis = true;
         }
         if ($workingNode instanceof Name) {
             $nodeFQCN = $this->useParser->getFQCN($workingNode);
             if ($scope->getFQCN() instanceof FQCN && $nodeFQCN->toString() === $scope->getFQCN()->toString()) {
                 $isThis = true;
             }
         }
         $types = $this->typeResolver->getChainType($workingNode, $index, $scope);
         $context->setData([array_pop($types), $isThis, $types, $workingNode]);
     }
     if ($token->isUseOperator() || $token->isNamespaceOperator() || $token->isNewOperator()) {
         $context->setData(trim($token->getSymbol()));
     }
     return $context;
 }
示例#3
0
 public function getCompleter(Context $context, Project $project)
 {
     if ($context->isNamespace()) {
         return $this->namespaceCompleter;
     } elseif ($context->isUse()) {
         return $this->useCompleter;
     } elseif ($context->isClassName()) {
         return $this->classNameCompleter;
     } elseif ($context->isInterfaceName()) {
         return $this->interfaceNameCompleter;
     } elseif ($context->isThis() || $context->isObject()) {
         return $this->objectCompleter;
     } elseif ($context->isClassStatic()) {
         return $this->staticCompleter;
     } elseif ($context->isVar()) {
         return $this->varCompleter;
     }
     $event = new CustomCompleterEvent($project, $context);
     $this->dispatcher->dispatch(self::CUSTOM_COMPLETER, $event);
     $completer = $event->completer;
     if ($completer) {
         return $completer;
     }
     return null;
 }
 public function getEntries(Project $project, Context $context)
 {
     $entries = [];
     $postfix = trim("");
     foreach ($project->getIndex()->getClasses() as $fqcn => $class) {
         if (!empty($postfix) && strpos($fqcn, $postfix) === false) {
             continue;
         }
         $fqcn = $context->getScope()->getUses()->findAlias($class->fqcn);
         $complete = str_replace($postfix, "", $fqcn);
         $entries[] = new Entry($complete, '', '', $fqcn);
     }
     return $entries;
 }
示例#5
0
 public function getEntries(Project $project, Context $context)
 {
     $entries = [];
     $postfix = trim($context->getData());
     $index = $project->getIndex();
     $fqcns = array_merge($index->getClasses(), $index->getInterfaces());
     foreach ($fqcns as $fqcn => $class) {
         if (!empty($postfix) && strpos($fqcn, $postfix) === false) {
             continue;
         }
         $complete = str_replace($postfix, "", $fqcn);
         $entries[] = new Entry($complete, '', '', $fqcn);
     }
     return $entries;
 }
 public function getEntries(Project $project, Context $context)
 {
     $entries = [];
     $postfix = trim($context->getData());
     foreach ($project->getIndex()->getFQCNs() as $fqcn) {
         $namespace = $fqcn->getNamespace();
         if (!empty($postfix) && strpos($namespace, $postfix) === false) {
             continue;
         }
         $complete = str_replace($postfix, "", $namespace);
         $entries[$namespace] = new Entry($complete, "", "", $namespace);
     }
     $entries = array_values($entries);
     return $entries;
 }
示例#7
0
 public function getEntries(Project $project, Context $context)
 {
     /** @var FQCN $fqcn */
     list($fqcn, $isThis) = $context->getData();
     $this->logger->debug('creating static entries');
     if (!$fqcn instanceof FQCN) {
         return [];
     }
     $index = $project->getIndex();
     $this->logger->debug('Creating completion for ' . $fqcn->toString());
     $class = $index->findClassByFQCN($fqcn);
     if (empty($class)) {
         $class = $index->findInterfaceByFQCN($fqcn);
     }
     if (empty($class)) {
         return [];
     }
     $entries = [];
     $spec = new Specification($isThis ? 'private' : 'public', 1);
     if ($class->methods !== null) {
         foreach ($class->methods->all($spec) as $method) {
             $entry = $this->createEntryForMethod($method);
             $entries[$method->name] = $entry;
         }
     }
     if ($class instanceof InterfaceData) {
         return $entries;
     }
     if ($class->properties !== null) {
         foreach ($class->properties->all($spec) as $property) {
             $entries[$property->name] = $this->createEntryForProperty($property);
         }
     }
     if ($class->constants !== null) {
         foreach ($class->constants->all() as $const) {
             $entries[$const] = $this->createEntryForConst($const);
         }
     }
     ksort($entries);
     return $entries;
 }
示例#8
0
 public function getEntries(Project $project, Context $context)
 {
     return array_map([$this, 'createEntry'], $context->getScope()->getVars());
 }