webshell-analyzer 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- webshell_analyzer/__init__.py +0 -0
- webshell_analyzer/cli/__init__.py +0 -0
- webshell_analyzer/cli/cli.py +151 -0
- webshell_analyzer/extractor/ast_extraction/composer.json +5 -0
- webshell_analyzer/extractor/ast_extraction/composer.lock +77 -0
- webshell_analyzer/extractor/ast_extraction/src/NodeVisitor.php +85 -0
- webshell_analyzer/extractor/ast_extraction/src/astBuilder.php +50 -0
- webshell_analyzer/extractor/ast_extraction/src/astExtractor.php +50 -0
- webshell_analyzer/extractor/ast_extraction/src/featuresDeclare.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/autoload.php +25 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/ClassLoader.php +579 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/InstalledVersions.php +378 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_classmap.php +10 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_namespaces.php +9 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_psr4.php +10 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_real.php +38 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_static.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/installed.json +67 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/installed.php +32 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/platform_check.php +26 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +150 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php +151 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +50 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +86 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +116 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +73 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php +67 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +94 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php +147 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +45 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php +171 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php +223 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +65 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +145 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +83 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php +49 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder.php +12 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php +375 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +338 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php +6 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Comment.php +209 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +6 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +237 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Error.php +173 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +43 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +17 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php +12 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +31 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php +178 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +71 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +282 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php +108 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +230 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php +93 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +49 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +26 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +45 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +60 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +19 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +60 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php +45 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php +19 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +31 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +31 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/VoidCastEmulator.php +98 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer.php +116 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Modifiers.php +85 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NameContext.php +284 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php +44 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +27 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +13 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +34 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +84 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +60 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +16 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Void_.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +25 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +86 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +38 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +38 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +35 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +34 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +32 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +45 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +40 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +45 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +35 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +35 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +45 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php +8 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +40 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php +85 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +27 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +49 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +49 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php +278 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php +123 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php +105 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +17 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +27 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +161 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php +6 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +40 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +77 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +109 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +154 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +94 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +17 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +34 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +44 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +32 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +47 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +50 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +81 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +41 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +46 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +40 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +16 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +121 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +17 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +12 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +34 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +17 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +47 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php +8 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php +27 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +16 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +27 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node.php +150 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php +181 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php +299 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php +90 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php +287 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +26 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +19 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +47 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +49 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +269 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +73 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +51 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php +124 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +24 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2919 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2917 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser.php +24 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php +1335 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php +42 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PhpVersion.php +175 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +1232 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +1706 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Token.php +18 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +71 -0
- webshell_analyzer/extractor/extractor.py +73 -0
- webshell_analyzer/extractor/lexical_extraction/lexicalExtractor.py +31 -0
- webshell_analyzer/extractor/statistical_extraction/statisticalExtractor.py +60 -0
- webshell_analyzer/model/features_selected.json +1 -0
- webshell_analyzer/model/model_loader.py +19 -0
- webshell_analyzer/model/rf_webshell_model.joblib +0 -0
- webshell_analyzer/modules/__init__.py +0 -0
- webshell_analyzer/modules/detector.py +174 -0
- webshell_analyzer/modules/scanner.py +68 -0
- webshell_analyzer-1.0.0.dist-info/METADATA +105 -0
- webshell_analyzer-1.0.0.dist-info/RECORD +304 -0
- webshell_analyzer-1.0.0.dist-info/WHEEL +5 -0
- webshell_analyzer-1.0.0.dist-info/entry_points.txt +2 -0
- webshell_analyzer-1.0.0.dist-info/licenses/LICENSE +21 -0
- webshell_analyzer-1.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser\Builder;
|
|
4
|
+
|
|
5
|
+
use PhpParser;
|
|
6
|
+
use PhpParser\BuilderHelpers;
|
|
7
|
+
use PhpParser\Node;
|
|
8
|
+
use PhpParser\Node\Name;
|
|
9
|
+
use PhpParser\Node\Stmt;
|
|
10
|
+
|
|
11
|
+
class Interface_ extends Declaration {
|
|
12
|
+
protected string $name;
|
|
13
|
+
/** @var list<Name> */
|
|
14
|
+
protected array $extends = [];
|
|
15
|
+
/** @var list<Stmt\ClassConst> */
|
|
16
|
+
protected array $constants = [];
|
|
17
|
+
/** @var list<Stmt\ClassMethod> */
|
|
18
|
+
protected array $methods = [];
|
|
19
|
+
/** @var list<Node\AttributeGroup> */
|
|
20
|
+
protected array $attributeGroups = [];
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Creates an interface builder.
|
|
24
|
+
*
|
|
25
|
+
* @param string $name Name of the interface
|
|
26
|
+
*/
|
|
27
|
+
public function __construct(string $name) {
|
|
28
|
+
$this->name = $name;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Extends one or more interfaces.
|
|
33
|
+
*
|
|
34
|
+
* @param Name|string ...$interfaces Names of interfaces to extend
|
|
35
|
+
*
|
|
36
|
+
* @return $this The builder instance (for fluid interface)
|
|
37
|
+
*/
|
|
38
|
+
public function extend(...$interfaces) {
|
|
39
|
+
foreach ($interfaces as $interface) {
|
|
40
|
+
$this->extends[] = BuilderHelpers::normalizeName($interface);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return $this;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Adds a statement.
|
|
48
|
+
*
|
|
49
|
+
* @param Stmt|PhpParser\Builder $stmt The statement to add
|
|
50
|
+
*
|
|
51
|
+
* @return $this The builder instance (for fluid interface)
|
|
52
|
+
*/
|
|
53
|
+
public function addStmt($stmt) {
|
|
54
|
+
$stmt = BuilderHelpers::normalizeNode($stmt);
|
|
55
|
+
|
|
56
|
+
if ($stmt instanceof Stmt\ClassConst) {
|
|
57
|
+
$this->constants[] = $stmt;
|
|
58
|
+
} elseif ($stmt instanceof Stmt\ClassMethod) {
|
|
59
|
+
// we erase all statements in the body of an interface method
|
|
60
|
+
$stmt->stmts = null;
|
|
61
|
+
$this->methods[] = $stmt;
|
|
62
|
+
} else {
|
|
63
|
+
throw new \LogicException(sprintf('Unexpected node of type "%s"', $stmt->getType()));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return $this;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Adds an attribute group.
|
|
71
|
+
*
|
|
72
|
+
* @param Node\Attribute|Node\AttributeGroup $attribute
|
|
73
|
+
*
|
|
74
|
+
* @return $this The builder instance (for fluid interface)
|
|
75
|
+
*/
|
|
76
|
+
public function addAttribute($attribute) {
|
|
77
|
+
$this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
|
|
78
|
+
|
|
79
|
+
return $this;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Returns the built interface node.
|
|
84
|
+
*
|
|
85
|
+
* @return Stmt\Interface_ The built interface node
|
|
86
|
+
*/
|
|
87
|
+
public function getNode(): PhpParser\Node {
|
|
88
|
+
return new Stmt\Interface_($this->name, [
|
|
89
|
+
'extends' => $this->extends,
|
|
90
|
+
'stmts' => array_merge($this->constants, $this->methods),
|
|
91
|
+
'attrGroups' => $this->attributeGroups,
|
|
92
|
+
], $this->attributes);
|
|
93
|
+
}
|
|
94
|
+
}
|
webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser\Builder;
|
|
4
|
+
|
|
5
|
+
use PhpParser;
|
|
6
|
+
use PhpParser\BuilderHelpers;
|
|
7
|
+
use PhpParser\Modifiers;
|
|
8
|
+
use PhpParser\Node;
|
|
9
|
+
use PhpParser\Node\Stmt;
|
|
10
|
+
|
|
11
|
+
class Method extends FunctionLike {
|
|
12
|
+
protected string $name;
|
|
13
|
+
|
|
14
|
+
protected int $flags = 0;
|
|
15
|
+
|
|
16
|
+
/** @var list<Stmt>|null */
|
|
17
|
+
protected ?array $stmts = [];
|
|
18
|
+
|
|
19
|
+
/** @var list<Node\AttributeGroup> */
|
|
20
|
+
protected array $attributeGroups = [];
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Creates a method builder.
|
|
24
|
+
*
|
|
25
|
+
* @param string $name Name of the method
|
|
26
|
+
*/
|
|
27
|
+
public function __construct(string $name) {
|
|
28
|
+
$this->name = $name;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Makes the method public.
|
|
33
|
+
*
|
|
34
|
+
* @return $this The builder instance (for fluid interface)
|
|
35
|
+
*/
|
|
36
|
+
public function makePublic() {
|
|
37
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PUBLIC);
|
|
38
|
+
|
|
39
|
+
return $this;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Makes the method protected.
|
|
44
|
+
*
|
|
45
|
+
* @return $this The builder instance (for fluid interface)
|
|
46
|
+
*/
|
|
47
|
+
public function makeProtected() {
|
|
48
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED);
|
|
49
|
+
|
|
50
|
+
return $this;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Makes the method private.
|
|
55
|
+
*
|
|
56
|
+
* @return $this The builder instance (for fluid interface)
|
|
57
|
+
*/
|
|
58
|
+
public function makePrivate() {
|
|
59
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE);
|
|
60
|
+
|
|
61
|
+
return $this;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Makes the method static.
|
|
66
|
+
*
|
|
67
|
+
* @return $this The builder instance (for fluid interface)
|
|
68
|
+
*/
|
|
69
|
+
public function makeStatic() {
|
|
70
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::STATIC);
|
|
71
|
+
|
|
72
|
+
return $this;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Makes the method abstract.
|
|
77
|
+
*
|
|
78
|
+
* @return $this The builder instance (for fluid interface)
|
|
79
|
+
*/
|
|
80
|
+
public function makeAbstract() {
|
|
81
|
+
if (!empty($this->stmts)) {
|
|
82
|
+
throw new \LogicException('Cannot make method with statements abstract');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::ABSTRACT);
|
|
86
|
+
$this->stmts = null; // abstract methods don't have statements
|
|
87
|
+
|
|
88
|
+
return $this;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Makes the method final.
|
|
93
|
+
*
|
|
94
|
+
* @return $this The builder instance (for fluid interface)
|
|
95
|
+
*/
|
|
96
|
+
public function makeFinal() {
|
|
97
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::FINAL);
|
|
98
|
+
|
|
99
|
+
return $this;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Adds a statement.
|
|
104
|
+
*
|
|
105
|
+
* @param Node|PhpParser\Builder $stmt The statement to add
|
|
106
|
+
*
|
|
107
|
+
* @return $this The builder instance (for fluid interface)
|
|
108
|
+
*/
|
|
109
|
+
public function addStmt($stmt) {
|
|
110
|
+
if (null === $this->stmts) {
|
|
111
|
+
throw new \LogicException('Cannot add statements to an abstract method');
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
$this->stmts[] = BuilderHelpers::normalizeStmt($stmt);
|
|
115
|
+
|
|
116
|
+
return $this;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Adds an attribute group.
|
|
121
|
+
*
|
|
122
|
+
* @param Node\Attribute|Node\AttributeGroup $attribute
|
|
123
|
+
*
|
|
124
|
+
* @return $this The builder instance (for fluid interface)
|
|
125
|
+
*/
|
|
126
|
+
public function addAttribute($attribute) {
|
|
127
|
+
$this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
|
|
128
|
+
|
|
129
|
+
return $this;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Returns the built method node.
|
|
134
|
+
*
|
|
135
|
+
* @return Stmt\ClassMethod The built method node
|
|
136
|
+
*/
|
|
137
|
+
public function getNode(): Node {
|
|
138
|
+
return new Stmt\ClassMethod($this->name, [
|
|
139
|
+
'flags' => $this->flags,
|
|
140
|
+
'byRef' => $this->returnByRef,
|
|
141
|
+
'params' => $this->params,
|
|
142
|
+
'returnType' => $this->returnType,
|
|
143
|
+
'stmts' => $this->stmts,
|
|
144
|
+
'attrGroups' => $this->attributeGroups,
|
|
145
|
+
], $this->attributes);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser\Builder;
|
|
4
|
+
|
|
5
|
+
use PhpParser;
|
|
6
|
+
use PhpParser\BuilderHelpers;
|
|
7
|
+
use PhpParser\Node;
|
|
8
|
+
use PhpParser\Node\Stmt;
|
|
9
|
+
|
|
10
|
+
class Namespace_ extends Declaration {
|
|
11
|
+
private ?Node\Name $name;
|
|
12
|
+
/** @var Stmt[] */
|
|
13
|
+
private array $stmts = [];
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Creates a namespace builder.
|
|
17
|
+
*
|
|
18
|
+
* @param Node\Name|string|null $name Name of the namespace
|
|
19
|
+
*/
|
|
20
|
+
public function __construct($name) {
|
|
21
|
+
$this->name = null !== $name ? BuilderHelpers::normalizeName($name) : null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Adds a statement.
|
|
26
|
+
*
|
|
27
|
+
* @param Node|PhpParser\Builder $stmt The statement to add
|
|
28
|
+
*
|
|
29
|
+
* @return $this The builder instance (for fluid interface)
|
|
30
|
+
*/
|
|
31
|
+
public function addStmt($stmt) {
|
|
32
|
+
$this->stmts[] = BuilderHelpers::normalizeStmt($stmt);
|
|
33
|
+
|
|
34
|
+
return $this;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Returns the built node.
|
|
39
|
+
*
|
|
40
|
+
* @return Stmt\Namespace_ The built node
|
|
41
|
+
*/
|
|
42
|
+
public function getNode(): Node {
|
|
43
|
+
return new Stmt\Namespace_($this->name, $this->stmts, $this->attributes);
|
|
44
|
+
}
|
|
45
|
+
}
|
webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser\Builder;
|
|
4
|
+
|
|
5
|
+
use PhpParser;
|
|
6
|
+
use PhpParser\BuilderHelpers;
|
|
7
|
+
use PhpParser\Modifiers;
|
|
8
|
+
use PhpParser\Node;
|
|
9
|
+
|
|
10
|
+
class Param implements PhpParser\Builder {
|
|
11
|
+
protected string $name;
|
|
12
|
+
protected ?Node\Expr $default = null;
|
|
13
|
+
/** @var Node\Identifier|Node\Name|Node\ComplexType|null */
|
|
14
|
+
protected ?Node $type = null;
|
|
15
|
+
protected bool $byRef = false;
|
|
16
|
+
protected int $flags = 0;
|
|
17
|
+
protected bool $variadic = false;
|
|
18
|
+
/** @var list<Node\AttributeGroup> */
|
|
19
|
+
protected array $attributeGroups = [];
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Creates a parameter builder.
|
|
23
|
+
*
|
|
24
|
+
* @param string $name Name of the parameter
|
|
25
|
+
*/
|
|
26
|
+
public function __construct(string $name) {
|
|
27
|
+
$this->name = $name;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Sets default value for the parameter.
|
|
32
|
+
*
|
|
33
|
+
* @param mixed $value Default value to use
|
|
34
|
+
*
|
|
35
|
+
* @return $this The builder instance (for fluid interface)
|
|
36
|
+
*/
|
|
37
|
+
public function setDefault($value) {
|
|
38
|
+
$this->default = BuilderHelpers::normalizeValue($value);
|
|
39
|
+
|
|
40
|
+
return $this;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Sets type for the parameter.
|
|
45
|
+
*
|
|
46
|
+
* @param string|Node\Name|Node\Identifier|Node\ComplexType $type Parameter type
|
|
47
|
+
*
|
|
48
|
+
* @return $this The builder instance (for fluid interface)
|
|
49
|
+
*/
|
|
50
|
+
public function setType($type) {
|
|
51
|
+
$this->type = BuilderHelpers::normalizeType($type);
|
|
52
|
+
if ($this->type == 'void') {
|
|
53
|
+
throw new \LogicException('Parameter type cannot be void');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return $this;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Make the parameter accept the value by reference.
|
|
61
|
+
*
|
|
62
|
+
* @return $this The builder instance (for fluid interface)
|
|
63
|
+
*/
|
|
64
|
+
public function makeByRef() {
|
|
65
|
+
$this->byRef = true;
|
|
66
|
+
|
|
67
|
+
return $this;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Make the parameter variadic
|
|
72
|
+
*
|
|
73
|
+
* @return $this The builder instance (for fluid interface)
|
|
74
|
+
*/
|
|
75
|
+
public function makeVariadic() {
|
|
76
|
+
$this->variadic = true;
|
|
77
|
+
|
|
78
|
+
return $this;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Makes the (promoted) parameter public.
|
|
83
|
+
*
|
|
84
|
+
* @return $this The builder instance (for fluid interface)
|
|
85
|
+
*/
|
|
86
|
+
public function makePublic() {
|
|
87
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PUBLIC);
|
|
88
|
+
|
|
89
|
+
return $this;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Makes the (promoted) parameter protected.
|
|
94
|
+
*
|
|
95
|
+
* @return $this The builder instance (for fluid interface)
|
|
96
|
+
*/
|
|
97
|
+
public function makeProtected() {
|
|
98
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED);
|
|
99
|
+
|
|
100
|
+
return $this;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Makes the (promoted) parameter private.
|
|
105
|
+
*
|
|
106
|
+
* @return $this The builder instance (for fluid interface)
|
|
107
|
+
*/
|
|
108
|
+
public function makePrivate() {
|
|
109
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE);
|
|
110
|
+
|
|
111
|
+
return $this;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Makes the (promoted) parameter readonly.
|
|
116
|
+
*
|
|
117
|
+
* @return $this The builder instance (for fluid interface)
|
|
118
|
+
*/
|
|
119
|
+
public function makeReadonly() {
|
|
120
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::READONLY);
|
|
121
|
+
|
|
122
|
+
return $this;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Gives the promoted property private(set) visibility.
|
|
127
|
+
*
|
|
128
|
+
* @return $this The builder instance (for fluid interface)
|
|
129
|
+
*/
|
|
130
|
+
public function makePrivateSet() {
|
|
131
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE_SET);
|
|
132
|
+
|
|
133
|
+
return $this;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Gives the promoted property protected(set) visibility.
|
|
138
|
+
*
|
|
139
|
+
* @return $this The builder instance (for fluid interface)
|
|
140
|
+
*/
|
|
141
|
+
public function makeProtectedSet() {
|
|
142
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED_SET);
|
|
143
|
+
|
|
144
|
+
return $this;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Adds an attribute group.
|
|
149
|
+
*
|
|
150
|
+
* @param Node\Attribute|Node\AttributeGroup $attribute
|
|
151
|
+
*
|
|
152
|
+
* @return $this The builder instance (for fluid interface)
|
|
153
|
+
*/
|
|
154
|
+
public function addAttribute($attribute) {
|
|
155
|
+
$this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
|
|
156
|
+
|
|
157
|
+
return $this;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Returns the built parameter node.
|
|
162
|
+
*
|
|
163
|
+
* @return Node\Param The built parameter node
|
|
164
|
+
*/
|
|
165
|
+
public function getNode(): Node {
|
|
166
|
+
return new Node\Param(
|
|
167
|
+
new Node\Expr\Variable($this->name),
|
|
168
|
+
$this->default, $this->type, $this->byRef, $this->variadic, [], $this->flags, $this->attributeGroups
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser\Builder;
|
|
4
|
+
|
|
5
|
+
use PhpParser;
|
|
6
|
+
use PhpParser\BuilderHelpers;
|
|
7
|
+
use PhpParser\Modifiers;
|
|
8
|
+
use PhpParser\Node;
|
|
9
|
+
use PhpParser\Node\Identifier;
|
|
10
|
+
use PhpParser\Node\Name;
|
|
11
|
+
use PhpParser\Node\Stmt;
|
|
12
|
+
use PhpParser\Node\ComplexType;
|
|
13
|
+
|
|
14
|
+
class Property implements PhpParser\Builder {
|
|
15
|
+
protected string $name;
|
|
16
|
+
|
|
17
|
+
protected int $flags = 0;
|
|
18
|
+
|
|
19
|
+
protected ?Node\Expr $default = null;
|
|
20
|
+
/** @var array<string, mixed> */
|
|
21
|
+
protected array $attributes = [];
|
|
22
|
+
/** @var null|Identifier|Name|ComplexType */
|
|
23
|
+
protected ?Node $type = null;
|
|
24
|
+
/** @var list<Node\AttributeGroup> */
|
|
25
|
+
protected array $attributeGroups = [];
|
|
26
|
+
/** @var list<Node\PropertyHook> */
|
|
27
|
+
protected array $hooks = [];
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Creates a property builder.
|
|
31
|
+
*
|
|
32
|
+
* @param string $name Name of the property
|
|
33
|
+
*/
|
|
34
|
+
public function __construct(string $name) {
|
|
35
|
+
$this->name = $name;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Makes the property public.
|
|
40
|
+
*
|
|
41
|
+
* @return $this The builder instance (for fluid interface)
|
|
42
|
+
*/
|
|
43
|
+
public function makePublic() {
|
|
44
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PUBLIC);
|
|
45
|
+
|
|
46
|
+
return $this;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Makes the property protected.
|
|
51
|
+
*
|
|
52
|
+
* @return $this The builder instance (for fluid interface)
|
|
53
|
+
*/
|
|
54
|
+
public function makeProtected() {
|
|
55
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED);
|
|
56
|
+
|
|
57
|
+
return $this;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Makes the property private.
|
|
62
|
+
*
|
|
63
|
+
* @return $this The builder instance (for fluid interface)
|
|
64
|
+
*/
|
|
65
|
+
public function makePrivate() {
|
|
66
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE);
|
|
67
|
+
|
|
68
|
+
return $this;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Makes the property static.
|
|
73
|
+
*
|
|
74
|
+
* @return $this The builder instance (for fluid interface)
|
|
75
|
+
*/
|
|
76
|
+
public function makeStatic() {
|
|
77
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::STATIC);
|
|
78
|
+
|
|
79
|
+
return $this;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Makes the property readonly.
|
|
84
|
+
*
|
|
85
|
+
* @return $this The builder instance (for fluid interface)
|
|
86
|
+
*/
|
|
87
|
+
public function makeReadonly() {
|
|
88
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::READONLY);
|
|
89
|
+
|
|
90
|
+
return $this;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Makes the property abstract. Requires at least one property hook to be specified as well.
|
|
95
|
+
*
|
|
96
|
+
* @return $this The builder instance (for fluid interface)
|
|
97
|
+
*/
|
|
98
|
+
public function makeAbstract() {
|
|
99
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::ABSTRACT);
|
|
100
|
+
|
|
101
|
+
return $this;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Makes the property final.
|
|
106
|
+
*
|
|
107
|
+
* @return $this The builder instance (for fluid interface)
|
|
108
|
+
*/
|
|
109
|
+
public function makeFinal() {
|
|
110
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::FINAL);
|
|
111
|
+
|
|
112
|
+
return $this;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Gives the property private(set) visibility.
|
|
117
|
+
*
|
|
118
|
+
* @return $this The builder instance (for fluid interface)
|
|
119
|
+
*/
|
|
120
|
+
public function makePrivateSet() {
|
|
121
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE_SET);
|
|
122
|
+
|
|
123
|
+
return $this;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Gives the property protected(set) visibility.
|
|
128
|
+
*
|
|
129
|
+
* @return $this The builder instance (for fluid interface)
|
|
130
|
+
*/
|
|
131
|
+
public function makeProtectedSet() {
|
|
132
|
+
$this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED_SET);
|
|
133
|
+
|
|
134
|
+
return $this;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Sets default value for the property.
|
|
139
|
+
*
|
|
140
|
+
* @param mixed $value Default value to use
|
|
141
|
+
*
|
|
142
|
+
* @return $this The builder instance (for fluid interface)
|
|
143
|
+
*/
|
|
144
|
+
public function setDefault($value) {
|
|
145
|
+
$this->default = BuilderHelpers::normalizeValue($value);
|
|
146
|
+
|
|
147
|
+
return $this;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Sets doc comment for the property.
|
|
152
|
+
*
|
|
153
|
+
* @param PhpParser\Comment\Doc|string $docComment Doc comment to set
|
|
154
|
+
*
|
|
155
|
+
* @return $this The builder instance (for fluid interface)
|
|
156
|
+
*/
|
|
157
|
+
public function setDocComment($docComment) {
|
|
158
|
+
$this->attributes = [
|
|
159
|
+
'comments' => [BuilderHelpers::normalizeDocComment($docComment)]
|
|
160
|
+
];
|
|
161
|
+
|
|
162
|
+
return $this;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Sets the property type for PHP 7.4+.
|
|
167
|
+
*
|
|
168
|
+
* @param string|Name|Identifier|ComplexType $type
|
|
169
|
+
*
|
|
170
|
+
* @return $this
|
|
171
|
+
*/
|
|
172
|
+
public function setType($type) {
|
|
173
|
+
$this->type = BuilderHelpers::normalizeType($type);
|
|
174
|
+
|
|
175
|
+
return $this;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Adds an attribute group.
|
|
180
|
+
*
|
|
181
|
+
* @param Node\Attribute|Node\AttributeGroup $attribute
|
|
182
|
+
*
|
|
183
|
+
* @return $this The builder instance (for fluid interface)
|
|
184
|
+
*/
|
|
185
|
+
public function addAttribute($attribute) {
|
|
186
|
+
$this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
|
|
187
|
+
|
|
188
|
+
return $this;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Adds a property hook.
|
|
193
|
+
*
|
|
194
|
+
* @return $this The builder instance (for fluid interface)
|
|
195
|
+
*/
|
|
196
|
+
public function addHook(Node\PropertyHook $hook) {
|
|
197
|
+
$this->hooks[] = $hook;
|
|
198
|
+
|
|
199
|
+
return $this;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Returns the built class node.
|
|
204
|
+
*
|
|
205
|
+
* @return Stmt\Property The built property node
|
|
206
|
+
*/
|
|
207
|
+
public function getNode(): PhpParser\Node {
|
|
208
|
+
if ($this->flags & Modifiers::ABSTRACT && !$this->hooks) {
|
|
209
|
+
throw new PhpParser\Error('Only hooked properties may be declared abstract');
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return new Stmt\Property(
|
|
213
|
+
$this->flags !== 0 ? $this->flags : Modifiers::PUBLIC,
|
|
214
|
+
[
|
|
215
|
+
new Node\PropertyItem($this->name, $this->default)
|
|
216
|
+
],
|
|
217
|
+
$this->attributes,
|
|
218
|
+
$this->type,
|
|
219
|
+
$this->attributeGroups,
|
|
220
|
+
$this->hooks
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
}
|