X7ROOT File Manager
Current Path:
/home/prisjneg/public_html/vendor/nikic/php-parser/lib/PhpParser
home
/
prisjneg
/
public_html
/
vendor
/
nikic
/
php-parser
/
lib
/
PhpParser
/
📁
..
📁
Builder
📄
Builder.php
(202 B)
📄
BuilderFactory.php
(10.3 KB)
📄
BuilderHelpers.php
(9.73 KB)
📁
Comment
📄
Comment.php
(6.75 KB)
📄
ConstExprEvaluationException.php
(112 B)
📄
ConstExprEvaluator.php
(9.21 KB)
📄
Error.php
(4.84 KB)
📁
ErrorHandler
📄
ErrorHandler.php
(300 B)
📁
Internal
📄
JsonDecoder.php
(3.44 KB)
📁
Lexer
📄
Lexer.php
(4.26 KB)
📄
Modifiers.php
(2.71 KB)
📄
NameContext.php
(9.82 KB)
📁
Node
📄
Node.php
(4.03 KB)
📄
NodeAbstract.php
(5.24 KB)
📄
NodeDumper.php
(10.24 KB)
📄
NodeFinder.php
(2.55 KB)
📄
NodeTraverser.php
(10.09 KB)
📄
NodeTraverserInterface.php
(598 B)
📁
NodeVisitor
📄
NodeVisitor.php
(4.08 KB)
📄
NodeVisitorAbstract.php
(447 B)
📁
Parser
📄
Parser.php
(765 B)
📄
ParserAbstract.php
(50.13 KB)
📄
ParserFactory.php
(1.41 KB)
📄
PhpVersion.php
(4.62 KB)
📁
PrettyPrinter
📄
PrettyPrinter.php
(1.66 KB)
📄
PrettyPrinterAbstract.php
(70.38 KB)
📄
Token.php
(487 B)
📄
compatibility_tokens.php
(2.39 KB)
Editing: JsonDecoder.php
<?php declare(strict_types=1); namespace PhpParser; class JsonDecoder { /** @var \ReflectionClass<Node>[] Node type to reflection class map */ private array $reflectionClassCache; /** @return mixed */ public function decode(string $json) { $value = json_decode($json, true); if (json_last_error()) { throw new \RuntimeException('JSON decoding error: ' . json_last_error_msg()); } return $this->decodeRecursive($value); } /** * @param mixed $value * @return mixed */ private function decodeRecursive($value) { if (\is_array($value)) { if (isset($value['nodeType'])) { if ($value['nodeType'] === 'Comment' || $value['nodeType'] === 'Comment_Doc') { return $this->decodeComment($value); } return $this->decodeNode($value); } return $this->decodeArray($value); } return $value; } private function decodeArray(array $array): array { $decodedArray = []; foreach ($array as $key => $value) { $decodedArray[$key] = $this->decodeRecursive($value); } return $decodedArray; } private function decodeNode(array $value): Node { $nodeType = $value['nodeType']; if (!\is_string($nodeType)) { throw new \RuntimeException('Node type must be a string'); } $reflectionClass = $this->reflectionClassFromNodeType($nodeType); $node = $reflectionClass->newInstanceWithoutConstructor(); if (isset($value['attributes'])) { if (!\is_array($value['attributes'])) { throw new \RuntimeException('Attributes must be an array'); } $node->setAttributes($this->decodeArray($value['attributes'])); } foreach ($value as $name => $subNode) { if ($name === 'nodeType' || $name === 'attributes') { continue; } $node->$name = $this->decodeRecursive($subNode); } return $node; } private function decodeComment(array $value): Comment { $className = $value['nodeType'] === 'Comment' ? Comment::class : Comment\Doc::class; if (!isset($value['text'])) { throw new \RuntimeException('Comment must have text'); } return new $className( $value['text'], $value['line'] ?? -1, $value['filePos'] ?? -1, $value['tokenPos'] ?? -1, $value['endLine'] ?? -1, $value['endFilePos'] ?? -1, $value['endTokenPos'] ?? -1 ); } /** @return \ReflectionClass<Node> */ private function reflectionClassFromNodeType(string $nodeType): \ReflectionClass { if (!isset($this->reflectionClassCache[$nodeType])) { $className = $this->classNameFromNodeType($nodeType); $this->reflectionClassCache[$nodeType] = new \ReflectionClass($className); } return $this->reflectionClassCache[$nodeType]; } /** @return class-string<Node> */ private function classNameFromNodeType(string $nodeType): string { $className = 'PhpParser\\Node\\' . strtr($nodeType, '_', '\\'); if (class_exists($className)) { return $className; } $className .= '_'; if (class_exists($className)) { return $className; } throw new \RuntimeException("Unknown node type \"$nodeType\""); } }
Upload File
Create Folder