» PHP.JS SVN

435 PHP equivalents

PHP to Javascript Project: php.js

php.jsThis article is part of the 'Porting PHP to Javascript' Project, which aims to decrease the gap between developing for PHP & Javascript.

A lot of people are familiar with PHP's functions, and though Javascript functions are often quite similar, some functions may be missing or addressed differently. The Javascript implementations should be as compliant with the PHP versions as possible, a good indication is that the PHP function manual could also apply to the Javascript version.

Porting crucial PHP functions to Javascript can be fun & useful. Currently some PHP functions have been added, but readers are encouraged to contribute and improve functions by adding comments. Eventually the goal is to save all the functions in one php.js file and make it publicly available for your coding pleasure.

If you choose to contribute, let me know how you want to be credited in the function's comments. You may also want to subscribe to RSS so you receive updates whenever new functions are posted.

On twitter

Hello good people. Our little project is going strong and thanks to Felix Geisendörfer there are a couple of new developments that I want to share with you. I'll limit this article to SVN though.

SVN Advantages

Project development has been moved to SVN. This has a couple of advantages because SVN:

  • Saves all versions. We can see who changed what & why. And we can always revert to previous a version of a function.
  • Allows for more developers to contribute to this project without having to leave comments on this site all the time.
  • Becomes lower maintenance for myself.
  • Allows developers to include the PHP.JS repository in their projects. This way their PHP.JS they will always be up to date.

SVN Checkout

To do a checkout of the development trunk to a local directory called phpjs, you might execute the following code

svn co svn://svn.phpjs.org/phpjs/trunk phpjs

SVN Externals

svn:externals are like links to other projects. If your project is in SVN as well, you can very easily include PHP.JS into your project. For example if you'd like to store an up to date version of PHP.JS in a directory called 'libs' then the SVN external property could look like this:

libs/phpjs svn://svn.phpjs.org/phpjs/trunk

If the latest development release is a bit to risky for you, you might want to include a specific release (e.g. 112) like this:

libs/phpjs -r 112 svn://svn.phpjs.org/phpjs/trunk

Tags will be supported later on.

More information about the svn:externals property

SVN Write access

If you would like to help and contribute code to this project, I will manually have to create an account for you. In this phase we're only allowing requests from people who have a compatible philosophy about this project and have already made solid contributions.

If you're interested please leave a comment here or mail your request to: kevin [ a t ] van zonneveld [ d o t ] net

Trac

Trac is a nice web tool to browse SVN source changes, submit bugs & feature requests. For now all of it's features require a login (see above to request one), but we'll probably gradually allow anonymous access to more & more of it's features.

Once it's publicly available I'll announce the URL here.

Can't SVN?

Don't worry, you can still just post a Comment if you have improvements. If it's any good, other people will submit your code to our new repository. Credits will stay intact.

Kay that's it for now, thanks everyone for great contributions and insightful comments. I'll be back soon with more awesome PHP.JS news.

Stay up to date

You can track my blog rss articles and rss comments. You may also find my rss bookmarks interesting. Or twitter Follow me on Twitter


Like this Article?

Your money is no good here, but
you can boost morale by spreading the word! : )


tags: programming, php, javascript, svn, phpjs, trac
category: Programming - Javascript - PHP equivalents
read: 13,329 times

Add Comment

PHP.JS is outgroing this blog and moving to it's own space. Please leave your comment here: http://phpjs.org

Comments

#10. Kevin on 27 August 2008

Default avatar:Kevin@ gggeek: I'm working on all of your points:
- article on using rhino is coming (I've indeed just finished rewriting the test-suite)
- separate php.js site (progress @ www.phpjs.org)
- and custom packaging of php.js (will be a site-feature)
- list of unported function (can be found in SVN already: http://trac.plutonia.nl/projects/phpjs/browser/trunk/_unported)
... [more]
Thanks for your input!

#9. walrus on 27 August 2008

Default avatar:walrusThanks very much ;D Keep it go'ing ;)

#8. gggeek on 27 July 2008

Default avatar:gggeekWOW - so nice to see someone doing this project. I have been thinking about it ever since porting a php library to javascript, but never had enough time to really do anything about it.

Now, some ideas and request:

- sorry if there are already answers to these in the blog, but I find quite hard to search for info in here. I read that the project is going to be moved to its own site, and I will wait for that. Why not move to sf.net? They have svn, bug tracker etc, and setting up a project is quite straightforward. Also using http for svn is better for people who want to access via firewalls.
... [more]
- there looks to be some code for parsing php docs for getting the list of functions and running unit tests in rhino. It would be nice to have a little more docs on those. Also a script that lists porting status of every php function would be good (yes/no + known quirks), possibly with a total percentage and a per extension percentage

- what tool is used to parse the comments and generate the docs?

- why not package also the functions in "extensions" files, where all the functions pertaining to one php extension are packed together in a single js file? This way it is easier to find them and download them if you just need a subset

- a list of extensions that cannot / will not be ported (eg db access, etc...)

#7. Kevin on 17 April 2008

Default avatar:Kevin@ Philip Peterson: Nice! :)

#6. Philip Peterson on 17 April 2008

Default avatar:Philip PetersonOkay, I've added a few functions to the SVN :)

#5. Kevin on 15 April 2008

Default avatar:Kevin@ Philip Peterson: Neat work man, you've made it almost too easy for me to include the functions! Awesome :)

Please contact me: kevin [ a t ] van zonneveld [ d o t ] net, so I can give you the SVN account.

#4. Philip Peterson on 15 April 2008

Default avatar:Philip PetersonWheee, more functions!

function round ( val, precision ) {
// http://kevin.vanzonneveld.net
// + original by: Philip Peterson
// * example 1: round(1241757, -3);
// * returns 1: 1242000
// * example 2: round(3.6);
// * returns 2: 4
 
 
var precision = (round.arguments.length > 1) ? round.arguments[1] : 0;
return Math.round(val * Math.pow(10, precision))/Math.pow(10, precision);
}
 
function sizeof ( mixed_var, mode ) {
// http://kevin.vanzonneveld.net
// + original by: Philip Peterson
// - depends on: count
 
return count( mixed_var, mode );
}

#3. Philip Peterson on 15 April 2008

Default avatar:Philip PetersonHere are my new functions by the way:

function urldecode( str ) {
// http://kevin.vanzonneveld.net
// + original by: Philip Peterson
// - depends on: str_replace
// * example 1: urlencode('Kevin+van+Zonneveld%21');
// * returns 1: 'Kevin van Zonneveld!'

return unescape(str_replace("+", "%20", str));
}
function urlencode( str ) {
// http://kevin.vanzonneveld.net
// + original by: Philip Peterson
// - depends on: str_replace
// * example 1: urlencode('Kevin van Zonneveld!');
// * returns 1: 'Kevin+van+Zonneveld%21'

return str_replace("%20", "+", escape(str));
}

#2. Philip [Peterson] on 15 April 2008

Default avatar:Philip [Peterson]Hey, do you think you could possibly add me an SVN account? I'm working on two new functions as of now, but I can just post them as comments if I don't meet your reqs.

Thanks,
Philip

#1. Chad on 13 April 2008

Default avatar:ChadThis should prove to be very useful. Thanks for all the efforts.