This NPM package is focusing on providing to following abilities:
- A TypeScript/JavaScript wrapper for calling nikic's PHP-Parser
- Sort of auto generated type definitions to annotate the AST (represented as JSON) from nikic's PHP-Parser cli
- Some util/helper functions to easily retrieving proper PHP AST node with correct type annotation
This package needs you have PHP with composer installed first
# pnpm pnpm add @rightcapital/php-parser # yarn yarn add @rightcapital/php-parser # npm npm install --save @rightcapital/php-parserSupposed you have a PHP file named hello.php with the following content
<?phpecho"Hello";Here is your TypeScript code for parsing and retrieving the AST nodes of the above PHP file.
import{CliHelpers,FullyQualifiedScalarString,FullyQualifiedStmtEcho,NodeRetrieverHelpers,NodeType,NodeTypeInheritingFromNodeAbstract,}from'@rightcapital/php-parser';// Get the root AST nodes from PHP fileconstrootNodes: NodeTypeInheritingFromNodeAbstract[]=CliHelpers.parsePhpFileToAst('./hello.php');// or if you prefer to get AST from code string, just use// CliHelpers.parsePhpCodeStringToAst(`<?php echo "Hello";`)console.log(rootNodes);// [//{// nodeType: "Stmt_Echo",// attributes:{startLine: 2, startFilePos: 6, endLine: 2, endTokenPos: 4, endFilePos: 18 },// exprs: [[Object]],// },// ];constechoNode=NodeRetrieverHelpers.findNodeByNodeType<FullyQualifiedStmtEcho>(rootNodes,NodeType.Stmt_Echo,);// Get the specified node with type annotationconsole.log(echoNode);//{// nodeType: 'Stmt_Echo',// attributes:{startLine: 2, startFilePos: 6, endLine: 2, endTokenPos: 4, endFilePos: 18 },// exprs: [//{nodeType: 'Scalar_String', attributes: [Object], value: 'Hello' }// ]// }constscalarStringNode=NodeRetrieverHelpers.findNodeByNodeType<FullyQualifiedScalarString>(echoNode!.exprs,NodeType.Scalar_String,);console.log(scalarStringNode?.value);// HelloMIT License © 2023-Present