Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
bin
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

PHP Reflection

npm version Build Status Coverage Status Gitter

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.