Uniter - PHP in the browser and Node.js


Run PHP client-side in the browser or in Node.js.

Try it now

$ npm install uniter
$ node
> var php = require('uniter').createEngine('PHP');
> php.getStdout().on('data', function (text) { console.log(text); });
> php.execute('<?php print "Hello from PHP!";');
Hello from PHP!
  • Environment-agnostic architecture: should run in any modern browser (IE < 9 support coming soon) and Node.js

  • PHP statements, constructs and operators:

    • if, else and else if statements
    • while loop support
    • for loop support
    • foreach loop support
    • function statements with type hinting (as syntactic sugar only: no enforcement is performed yet)
    • Closure function expressions
    • switch statements
    • Forward and backward goto statements (but no overlap support yet)
    • class object support (new operator, extends support etc.)
    • Instance property/method access (-> operator)
    • Static class property/method access (:: operator), self:: construct
    • use statement for class, namespace and function importing and aliasing
    • Magic __autoload(...) function
    • Magic __DIR__, __FILE__ and __LINE__ constants
    • Ternary operator
    • Loose equality == and inequality != comparison operators
    • Strict equality === and inequality !== comparison operators

    And others... see the Engine integration tests for more info.

You can use Uniter from the command line after installing it via NPM, eg.:

# Install Uniter globally 
$ npm install -g uniter
# Execute PHP code 
$ uniter -r 'echo 7 + 2;'
# Parse PHP but just dump the AST as JSON, don't attempt to execute 
$ uniter -r 'echo 7 + 2;' --dump-ast
    "statements": [
                "right": [

There are two supported ways of running the Mocha test suite:

  1. Run the tests in Node.js from the command line:

     cd uniter/
     npm test
  2. Run the tests in a browser by starting a Node.js server:

     npm run-script webtest

    You should then be able to run the tests by visiting in a supported web browser.