Nodejs Reflection API for PHP files based on the php-parser
Install
npm install php-reflection --save
Usage
var reflection = require('php-reflection'); var workspace = new reflection.Repository('/home/devbox/my-project', { // actual default options : exclude: ['.git', '.svn'], include: ['./'], ext: [ '*.php','*.php3','*.php5','*.phtml', '*.inc','*.class','*.req' ], scanVars: true, scanExpr: true, encoding: 'utf8', cacheByFileSize: true }); var workers = [ workspace.parse('some-file.php'), workspace.parse('another-file.php'), workspace.parse('test-file.php') ]; Promise.all(workers).then(function() { console.log('-- list of functions :'); workspace.getByType('function').each(function(fn) { console.log('Function Name : ', fn.name); console.log('Located into : ', fn.getFile().name); console.log('At line : ', fn.position.start.line); }); });
Read the API docs for more details.
What it can do
- Fully reflection support (classes, inheritance, documentation blocks)
- Recursively scan directories and add files to repository
- Request cross files elements (like retrieving a class)
- Put in-memory documents structure (with a small memory footprint)
- You can use a cache engine for the repository
- It avoids parsing a file that is already in memory and not modified since last parsing
- Symbols relations (what variable instanciate a class, or who extends that class)
- A cool (and really fast) requesting engine for retrieving elements
What you could do with it
- Write a documentation generator
- Write a static code generator based on relection (like an ORM)
- Write a code analysis tool (like phpMessDetector)
- Write a code completion plugin
... if you want to share an idea or your project make a pull request
Benchmark
WIP Disclaimer
This project is actually on it's early alpha stage. It may progress rapidly, so watch the project if you are interested to use it.