当前位置: 首页>>代码示例>>PHP>>正文


PHP Node::getAttributes方法代码示例

本文整理汇总了PHP中PhpParser\Node::getAttributes方法的典型用法代码示例。如果您正苦于以下问题:PHP Node::getAttributes方法的具体用法?PHP Node::getAttributes怎么用?PHP Node::getAttributes使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PhpParser\Node的用法示例。


在下文中一共展示了Node::getAttributes方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: enterNode

 /**
  * Swap out __DIR__ and __FILE__ constants, because the default ones when
  * calling eval() don't make sense.
  *
  * @param Node $node
  *
  * @return null|FuncCall|StringNode
  */
 public function enterNode(Node $node)
 {
     if ($node instanceof Dir) {
         return new FuncCall(new Name('getcwd'), array(), $node->getAttributes());
     } elseif ($node instanceof File) {
         return new StringNode('', $node->getAttributes());
     }
 }
开发者ID:JesseDarellMoore,项目名称:CS499,代码行数:16,代码来源:MagicConstantsPass.php

示例2: resolveStack

 protected function resolveStack(Node $node, array $stack)
 {
     if (!$node->num) {
         return new Goto_(end($stack), $node->getAttributes());
     }
     if ($node->num instanceof LNumber) {
         $num = $node->num->value - 1;
         if ($num >= count($stack)) {
             throw new \LogicException("Too high of a count for " . $node->getType());
         }
         $loc = array_slice($stack, -1 * $num, 1);
         return new Goto_($loc[0], $node->getAttributes());
     }
     throw new \LogicException("Unimplemented Node Value Type");
 }
开发者ID:royopa,项目名称:php-cfg,代码行数:15,代码来源:LoopResolver.php

示例3: leaveNode

 /**
  * {@inheritdoc}
  */
 public function leaveNode(Node $node)
 {
     if (!$node instanceof Spaceship) {
         return;
     }
     /*
      * Replacing
      * $a <=> $b
      * with
      * $a < $b ? -1 : ($a == $b ? 0 : 1)
      */
     $attributes = $node->getAttributes();
     $smaller = new UnaryMinus(new LNumber(1, $attributes), $attributes);
     $equal = new LNumber(0, $attributes);
     $larger = new LNumber(1, $attributes);
     $isEqual = new Equal($node->left, $node->right, $attributes);
     $isSmaller = new Smaller($node->left, $node->right, $attributes);
     $else = new Ternary($isEqual, $equal, $larger, $attributes);
     return new Ternary($isSmaller, $smaller, $else, $attributes);
 }
开发者ID:spatie,项目名称:7to5,代码行数:23,代码来源:SpaceshipOperatorReplacer.php

示例4: enterNode

 public function enterNode(Node $node)
 {
     /*if ($node instanceof Node\Name)
             {
                  //echo "Node nameD:". $node."\n\n";
                 return new Node\Name($node->toString('_'));
             }
     
             || $node instanceof Stmt\Function_
     
             */
     if ($node instanceof Stmt\Function_) {
         array_push($this->functions, array("name" => $node->name, "position" => $node->getAttributes()));
     } else {
         if ($node instanceof Stmt\Interface_) {
             if (IS_DEBUG) {
                 echo "\nNode name:" . $node->name . "\n\n";
             }
             //print_r($node);
             $this->addItem($node, 'interface');
             //$node->name = $node->namespacedName->toString('_');
         } elseif ($node instanceof Stmt\Trait_) {
             $this->addItem($node, 'trait');
             //List all implements
             //List all classes
             //This class can use those functions as own
             //Parse and get those functions also
             if (IS_DEBUG) {
                 echo "\\Trait name:" . $node->name . "\n\n";
             }
         } elseif ($node instanceof Stmt\TraitUse) {
             /*            echo "\Trait name:". $node->traits."\n\n";*/
             ///FIXME implement it here
             foreach ($node->traits as $trait) {
                 //print_r($trait);
             }
         } elseif ($node instanceof Stmt\Class_) {
             //List all implements
             //List all classes
             //This class can use those functions as own
             //Parse and get those functions also
             if (IS_DEBUG) {
                 echo "\nClass name:" . $node->name . "\n\n";
             }
             $this->addItem($node, 'class');
             /*            $this->result['class'] = $node->name;*/
         } elseif ($node instanceof Stmt\ClassMethod) {
             if (IS_DEBUG) {
                 echo "\nClass method:" . $node->name . "\n\n";
             }
             //$this->result[$this->className]['methods'][] = $node->name;
             array_push($this->objects[$this->className]['methods'], array("name" => $node->name, "position" => $node->getAttributes()));
             //$this->classMethods[] = $node->name;
             //print_r($node);
         } elseif ($node instanceof Stmt\Const_) {
             /*foreach ($node->consts as $const) {
                   $const->name = $const->namespacedName->toString('_');
               }*/
         } elseif ($node instanceof Stmt\PropertyProperty) {
             //print_r($node);
             array_push($this->objects[$this->className]['variables'], array("name" => $node->name, "position" => $node->getAttributes()));
             /*foreach ($node->items as $prop) {
                   echo "Prop: ";
                   print_r($prop);
               }*/
         } elseif ($node instanceof Stmt\Namespace_) {
             $this->namespace_ = array("name" => str_replace("\\", "/", $node->name), "position" => $node->getAttributes());
             /*            $this->namespace_ =  $this->namespace_ );*/
             if (IS_DEBUG) {
                 echo "\nNode Namespace_ name:" . $node->name . "\n\n";
             }
             // returning an array merges is into the parent array
             //return $node->stmts;
         } elseif ($node instanceof Stmt\Use_) {
             //print_r($node);
             if (IS_DEBUG) {
                 echo "\nNode Use_ Namespace_ name:";
             }
             //. $node->uses[0]->name."\n\n";
             foreach ($node->uses as $use) {
                 //Name is using _ as seperator
                 if (IS_DEBUG) {
                     echo $use->name . " | " . $use->alias . "\n\n";
                     echo "\nClass method:" . $use->name . "\n\n";
                 }
                 //$this->result[$this->className]['methods'][] = $node->name;
                 array_push($this->use_, array("name" => $use->name->parts, "alias" => $use->alias, "position" => $node->getAttributes()));
             }
             // returning false removed the node altogether
             //return false;
         }
     }
 }
开发者ID:speedovation,项目名称:kiwi-php-plugins,代码行数:93,代码来源:PhpParser.php

示例5: addNamespacedName

 protected function addNamespacedName(Node $node)
 {
     if (null !== $this->namespace) {
         $node->namespacedName = clone $this->namespace;
         $node->namespacedName->append($node->name);
     } else {
         $node->namespacedName = new Name($node->name, $node->getAttributes());
     }
 }
开发者ID:ngitimfoyo,项目名称:Nyari-AppPHP,代码行数:9,代码来源:NameResolver.php

示例6: exchange

 /**
  * @param Node\Name $target
  * @param Node      $source
  */
 private function exchange(Node\Name $target, Node $source)
 {
     $attributes = $source->getAttributes();
     foreach ($attributes as $attr => $value) {
         $target->setAttribute($attr, $value);
     }
 }
开发者ID:fonsecas72,项目名称:PhpDependencyAnalysis,代码行数:11,代码来源:AbstractVisitor.php

示例7: leaveNode

 /** Examine the current PhpParser_Node node against the PHPSandbox configuration for validating sandboxed code
  *
  * @param   Node   $node          The sandboxed $node to validate
  *
  * @throws  Error             Throws an exception if validation fails
  *
  * @return  Node|bool|null        Return rewritten node, false if node must be removed, or null if no changes to the node are made
  */
 public function leaveNode(Node $node)
 {
     if ($node instanceof Node\Arg) {
         return new Node\Expr\FuncCall(new Node\Name\FullyQualified($node->value instanceof Node\Expr\Variable ? 'PHPSandbox\\wrapByRef' : 'PHPSandbox\\wrap'), [$node, new Node\Expr\StaticCall(new Node\Name\FullyQualified("PHPSandbox\\PHPSandbox"), 'getSandbox', [new Node\Scalar\String_($this->sandbox->name)])], $node->getAttributes());
     } else {
         if ($node instanceof Node\Stmt\InlineHTML) {
             if (!$this->sandbox->allow_escaping) {
                 $this->sandbox->validationError("Sandboxed code attempted to escape to HTML!", Error::ESCAPE_ERROR, $node);
             }
         } else {
             if ($node instanceof Node\Expr\Cast) {
                 if (!$this->sandbox->allow_casting) {
                     $this->sandbox->validationError("Sandboxed code attempted to cast!", Error::CAST_ERROR, $node);
                 }
                 if ($node instanceof Node\Expr\Cast\Int_) {
                     return new Node\Expr\MethodCall(new Node\Expr\StaticCall(new Node\Name\FullyQualified("PHPSandbox\\PHPSandbox"), 'getSandbox', [new Node\Scalar\String_($this->sandbox->name)]), '_intval', [new Node\Arg($node->expr)], $node->getAttributes());
                 } else {
                     if ($node instanceof Node\Expr\Cast\Double) {
                         return new Node\Expr\MethodCall(new Node\Expr\StaticCall(new Node\Name\FullyQualified("PHPSandbox\\PHPSandbox"), 'getSandbox', [new Node\Scalar\String_($this->sandbox->name)]), '_floatval', [new Node\Arg($node->expr)], $node->getAttributes());
                     } else {
                         if ($node instanceof Node\Expr\Cast\Bool_) {
                             return new Node\Expr\MethodCall(new Node\Expr\StaticCall(new Node\Name\FullyQualified("PHPSandbox\\PHPSandbox"), 'getSandbox', [new Node\Scalar\String_($this->sandbox->name)]), '_boolval', [new Node\Arg($node->expr)], $node->getAttributes());
                         } else {
                             if ($node instanceof Node\Expr\Cast\Array_) {
                                 return new Node\Expr\MethodCall(new Node\Expr\StaticCall(new Node\Name\FullyQualified("PHPSandbox\\PHPSandbox"), 'getSandbox', [new Node\Scalar\String_($this->sandbox->name)]), '_arrayval', [new Node\Arg($node->expr)], $node->getAttributes());
                             } else {
                                 if ($node instanceof Node\Expr\Cast\Object_) {
                                     return new Node\Expr\MethodCall(new Node\Expr\StaticCall(new Node\Name\FullyQualified("PHPSandbox\\PHPSandbox"), 'getSandbox', [new Node\Scalar\String_($this->sandbox->name)]), '_objectval', [new Node\Arg($node->expr)], $node->getAttributes());
                                 }
                             }
                         }
                     }
                 }
             } else {
                 if ($node instanceof Node\Expr\FuncCall) {
                     if ($node->name instanceof Node\Name) {
                         $name = strtolower($node->name->toString());
                         if (!$this->sandbox->checkFunc($name)) {
                             $this->sandbox->validationError("Function failed custom validation!", Error::VALID_FUNC_ERROR, $node);
                         }
                         if ($this->sandbox->isDefinedFunc($name)) {
                             $args = $node->args;
                             array_unshift($args, new Node\Arg(new Node\Scalar\String_($name)));
                             return new Node\Expr\MethodCall(new Node\Expr\StaticCall(new Node\Name\FullyQualified("PHPSandbox\\PHPSandbox"), 'getSandbox', [new Node\Scalar\String_($this->sandbox->name)]), 'call_func', $args, $node->getAttributes());
                         }
                         if ($this->sandbox->overwrite_defined_funcs && in_array($name, PHPSandbox::$defined_funcs)) {
                             return new Node\Expr\MethodCall(new Node\Expr\StaticCall(new Node\Name\FullyQualified("PHPSandbox\\PHPSandbox"), 'getSandbox', [new Node\Scalar\String_($this->sandbox->name)]), '_' . $name, [new Node\Arg(new Node\Expr\FuncCall(new Node\Name([$name])))], $node->getAttributes());
                         }
                         if ($this->sandbox->overwrite_sandboxed_string_funcs && in_array($name, PHPSandbox::$sandboxed_string_funcs)) {
                             $args = $node->args;
                             return new Node\Expr\MethodCall(new Node\Expr\StaticCall(new Node\Name\FullyQualified("PHPSandbox\\PHPSandbox"), 'getSandbox', [new Node\Scalar\String_($this->sandbox->name)]), '_' . $name, $args, $node->getAttributes());
                         }
                         if ($this->sandbox->overwrite_func_get_args && in_array($name, PHPSandbox::$arg_funcs)) {
                             if ($name == 'func_get_arg') {
                                 $index = new Node\Arg(new Node\Scalar\LNumber(0));
                                 if (isset($node->args[0]) && $node->args[0] instanceof Node\Arg) {
                                     $index = $node->args[0];
                                 }
                                 return new Node\Expr\MethodCall(new Node\Expr\StaticCall(new Node\Name\FullyQualified("PHPSandbox\\PHPSandbox"), 'getSandbox', [new Node\Scalar\String_($this->sandbox->name)]), '_' . $name, [new Node\Arg(new Node\Expr\FuncCall(new Node\Name(['func_get_args']))), $index], $node->getAttributes());
                             }
                             return new Node\Expr\MethodCall(new Node\Expr\StaticCall(new Node\Name\FullyQualified("PHPSandbox\\PHPSandbox"), 'getSandbox', [new Node\Scalar\String_($this->sandbox->name)]), '_' . $name, [new Node\Arg(new Node\Expr\FuncCall(new Node\Name(['func_get_args'])))], $node->getAttributes());
                         }
                     } else {
                         return new Node\Expr\Ternary(new Node\Expr\MethodCall(new Node\Expr\StaticCall(new Node\Name\FullyQualified("PHPSandbox\\PHPSandbox"), 'getSandbox', [new Node\Scalar\String_($this->sandbox->name)]), 'check_func', [new Node\Arg($node->name)], $node->getAttributes()), $node, new Node\Expr\ConstFetch(new Node\Name('null')));
                     }
                 } else {
                     if ($node instanceof Node\Stmt\Function_) {
                         if (!$this->sandbox->allow_functions) {
                             $this->sandbox->validationError("Sandboxed code attempted to define function!", Error::DEFINE_FUNC_ERROR, $node);
                         }
                         if (!$this->sandbox->checkKeyword('function')) {
                             $this->sandbox->validationError("Keyword failed custom validation!", Error::VALID_KEYWORD_ERROR, $node, 'function');
                         }
                         if (!$node->name) {
                             $this->sandbox->validationError("Sandboxed code attempted to define unnamed function!", Error::DEFINE_FUNC_ERROR, $node, '');
                         }
                         if ($this->sandbox->isDefinedFunc($node->name)) {
                             $this->sandbox->validationError("Sandboxed code attempted to redefine function!", Error::DEFINE_FUNC_ERROR, $node, $node->name);
                         }
                         if ($node->byRef && !$this->sandbox->allow_references) {
                             $this->sandbox->validationError("Sandboxed code attempted to define function return by reference!", Error::BYREF_ERROR, $node);
                         }
                     } else {
                         if ($node instanceof Node\Expr\Closure) {
                             if (!$this->sandbox->allow_closures) {
                                 $this->sandbox->validationError("Sandboxed code attempted to create a closure!", Error::CLOSURE_ERROR, $node);
                             }
                         } else {
                             if ($node instanceof Node\Stmt\Class_) {
                                 if (!$this->sandbox->allow_classes) {
                                     $this->sandbox->validationError("Sandboxed code attempted to define class!", Error::DEFINE_CLASS_ERROR, $node);
                                 }
//.........这里部分代码省略.........
开发者ID:Corveda,项目名称:PHPSandbox,代码行数:101,代码来源:ValidatorVisitor.php

示例8: mapAttributes

 private function mapAttributes(Node $expr)
 {
     return array_merge(["filename" => $this->fileName, "doccomment" => $expr->getDocComment()], $expr->getAttributes());
 }
开发者ID:ircmaxell,项目名称:php-cfg,代码行数:4,代码来源:Parser.php

示例9: fetchNode

 /**
  * Fetch Node line contents
  *
  * @param  Node $node
  * @return string[]
  */
 public function fetchNode(Node $node)
 {
     $attr = $node->getAttributes();
     return $this->fetchLines($attr['startLine'], $attr['endLine']);
 }
开发者ID:t-ichihara,项目名称:parse,代码行数:11,代码来源:File.php

示例10: mapAttributes

 private function mapAttributes(Node $expr)
 {
     return array_merge(["filename" => $this->fileName], $expr->getAttributes());
 }
开发者ID:royopa,项目名称:php-cfg,代码行数:4,代码来源:Parser.php

示例11: mapAttributes

 private function mapAttributes(Node $expr)
 {
     return $expr->getAttributes();
 }
开发者ID:nikic,项目名称:php-cfg,代码行数:4,代码来源:Parser.php


注:本文中的PhpParser\Node::getAttributes方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。