Skip to content
JavaScript (ES6) to PHP source-to-source transpiler.
JavaScript
Branch: master
Clone or download
Pull request Compare This branch is 52 commits ahead of endel:master.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
core Improve handling of String#substring and String#substr Mar 19, 2019
test
.gitignore add simple testsuite asserting js input / php output Oct 25, 2014
.travis.yml configure travis for testing Jul 24, 2015
LICENSE typo on README. add LICENSE file Sep 7, 2014
README.md Fixed regex for non literals. Aug 12, 2018
core.js Improve support for regexp literals Feb 12, 2019
index.js
js2php Parsoid-specific: add special case code for parsing pegjs files Feb 13, 2019
package-lock.json support IIFE. closes endel#22. bump 0.1.3 Sep 7, 2018
package.json
scope.js
utils.js

README.md

js2php

Build status

JavaScript to PHP source-to-source transpiler. Online demo

This is an experiment. Please do not use it.

Installation

  • Install nodejs
  • Install js2php globally: npm install -g js2php

Usage

Convert a single JavaScript file into PHP:

js2php examples/simple.js > simple.php

Since js2php outputs the PHP code to stdout, you may run it right after conversion:

js2php examples/class.js | php

Features

What does it converts?

  • Classes (ES6)
  • Getters and Setters (ES6)
  • Namespaces (ES6)
  • Loops (while / for / do-while / for-of / for-in)
  • Arrow functions (ES6)
  • Template strings (ES6)
  • Functions and closures
  • Conditionals
  • Core JavaScript
    • Array
      • Array.prototype.unshift
      • Array.prototype.shift
      • Array.prototype.reverse
      • Array.prototype.push
      • Array.prototype.pop
      • Array.prototype.join
      • Array.prototype.splice
      • Array.prototype.indexOf
      • Array.prototype.length
    • JSON
      • JSON.parse
      • JSON.stringify
    • Math
      • Math.E
      • Math.LN2
      • Math.LN10
      • Math.LOG2E
      • Math.LOG10E
      • Math.PI
      • Math.SQRT2
      • Math.SQRT1_2
      • Math.abs
      • Math.acos
      • Math.acosh
      • Math.asin
      • Math.asinh
      • Math.atan
      • Math.atanh
      • Math.atan2
      • Math.cbrt
      • Math.ceil
      • Math.clz32
      • Math.cos
      • Math.cosh
      • Math.exp
      • Math.expm1
      • Math.floor
      • Math.hypot
      • Math.log
      • Math.log1p
      • Math.log10
      • Math.max
      • Math.min
      • Math.pow
      • Math.random
      • Math.round
      • Math.sin
      • Math.sinh
      • Math.sqrt
      • Math.tan
      • Math.tanh
    • Number
      • Number.isInteger
      • Number.isFinite
    • String
      • String.prototype.replace
      • String.prototype.trim
      • String.prototype.trimRight
      • String.prototype.trimLeft
      • String.prototype.toUpperCase
      • String.prototype.toLowerCase
      • String.prototype.split
      • String.prototype.substr
      • String.prototype.match
    • Function
      • Function.prototype.apply
      • Function.prototype.call
    • Date
      • Date.now

Testing

Tests are simple input (js) / output (php) comparisions.

  1. Create your source .js file at test/fixtures/js_feature.js
  2. Convert your .js to .php manually: node test/generate.js js_feature.js
  3. Run npm test

License

MIT

You can’t perform that action at this time.