Node.js - phplike
Chinese Readme: https://github.com/puritys/nodejs-phplike/wiki/%E4%B8%AD%E6%96%87%E7%89%88-Readme
This project's purpose is to implement some useful PHP functions for Node.js or Io.js.
Second, Node.js is a event-driven language and it's method usually use asynchronous IO. Asynchronous IO is not a bad way for any web system. But sometimes, we want to make code be readable and easier to be maintained. The phplike support many synchroous functions for Node.js.
Phplike support synchronous function "exec", "curl", "fsockopen" executing without callback function. It can reduce the umber of callback functions, also will make the code easier to maintain, and phplike provide the function cUrl which is just like php's function called curl. It will let you make a request synchronously.
- npm: https://npmjs.org/package/phplike
- All version: https://registry.npmjs.org/phplike
- Git Source: https://github.com/puritys/nodejs-phplike
How many OS does phplike support?
- Linux : Every version of phplike support linux system.
- Mac : Supported from [email protected] to latest
- Windows: Supported only in [email protected] ใ [email protected] , [email protected] , I had ever test phplike on windows 8 and windows xp.
- Raspberry PI(Pidora OS with ARM CPU): [email protected] ~
OS | Suggested phplie Version |
---|---|
Linux | Latest |
Mac | 2.0.5 ~ latest |
Windows | 2.2.8, 2.4.2 |
Raspberry PI | 2.2.2 ~ latest |
If you have any issue for installing phplike, please open a issue in anytime. I will be pleasant to help you.
Dependency
- Phplike have been already tested in Node.js version from 0.10.x to 0.12.x and io.js 1.0.0 to 2.1.0. Here is the test report : https://travis-ci.org/puritys/nodejs-phplike
- libcurl (libcurl-7.19) : Linux system already have this built-in package. Please install libcurl-devel : sudo yum install libcurl-devel
- python 2.4 ~ : phplike use node-gyp to compile C/C++ codes. It needs python which's version must be bigger than 2.7.8, you can download the python from here https://www.python.org/downloads/.
After the new version of phplike 2.2.0, I committed all binary files which already compiled in Windows, Mac and Linux, you can just install the phplike without compiling C/C++ now.
Completed PHP Method
System function
- exec : Execute an external program
- system
- curl : curl_init, curl_setopt, curl_exec, curl_close, reuqest ( HTTP sync )
- usleep , sleep
basic
- print_r
- is_string
- is_int
- is_object
- is_array
- is_numeric
- is_int
- isset
- empty
- exit
- explode
- implode
File Handler
- file_get_contents
- file_put_contents
- mkdir
- unlink
- rmdir (dirname, isForce)
- is_file, is_dir
- readdir (get all file list in select directory)
Encoder and Decoder
- json_encode, json_decode, handle multibyte: json_decode(xx, 'JSON_UNESCAPED_UNICODE')
- md5
- base64_encode
- base64_decode
String
- sprintf
- str_pad
- substr (string, start, length)
- strtolower
- strtoupper
XML Parser XML Parser Document
-
DOMDocument
-
getElementsByTagName
-
DOMElement
-
firstChild
-
lastChild
-
hasAttributes
Socket
- fsockopen
- sendcmd
- fwrite
- fread
- mysqli_connect
- mysql_connect
- mysql_select_db
- mysql_query
- mysql_close
- mysql_create_db
- mysql_insert_id
array
- shuffle
- array_merge
- array_rand
Others
- time, date, mktime
- chr, ord : string to ascii number, ascii number to string
- decbin, bindec
- parse_str : parse "a=b&c=d" to {"a": "b", "c": "d"}
- clone: clone a object or array
- getcwd
- urlencode, urldecode
- intval: convert string to integer
- strval: convert integer to string
- trim
- http_build_query
##Install phplike
- sudo npm install -g phplike
If your computer has a not common OS, then you will need to install node-gyp first. Phplike compile C/C++ code using node-gyp module. Usually, NPM will auto install node-gyp when you install phplike.
- sudo npm install -g node-gyp
Execute phplike in global mode sample
You can require the index.js of phplike, then you will use the phplike function in global object. It means that you don't need prefix to call php function. To execute function like a real php coding.
exec(command, printInScreen = true);
require("phplike"); var tm = time(); sleep(10); var result = exec("ls -la"); print_r(result);
Execute phplike in module mode sample (phplike 2.0)
You can require module.js of phplike, then you will need prefix to call phplike function, the module mode will not change the method of global object and can separate both of php and node.js.
var php = require("phplike/module.js");
var tm = php.time();
php.sleep(10);
var result = php.exec("ls -la");
php.print_r(result);
Example code for php curl
require('phplike');
var url = "https://www.google.com.tw/search?q=php+unit+test";
var header = {"Cookie": "xxx"};
var c = curl_init();
curl_setopt(c, 'CURLOPT_URL', url);
var res = curl_exec(c);
curl_close(c);
console.log("respones = " + res);
Example code for php post (Using module mode)
var php = require("phplike/module.js");
var url = "http://localhost:8080/";
var param = {"q": "x"};
var header = {"Cookie": "xxx"};
var c = php.curl_init();
php.curl_setopt(c, 'CURLOPT_URL', url);
php.curl_setopt(c, 'CURLOPT_POST', 1);
php.curl_setopt(c, 'CURLOPT_POSTFIELDS', "a=bbb&c=eee");
php.curl_setopt(c, 'CURLOPT_HTTPHEADER', header);
var res = php.curl_exec(c);
var responseHeader = php.getResponseHeader(); // Get header
Example code for making a blocking request
var phplikeMod = require('phplike/module.js');
var url = "http://localhost:8080/";
var param = {"q": "x"};
var header = {"Cookie": "xxx"};
var res = phplikeMod.request("GET", url, param, header);
Functions will be implemented in the future
- abs
- acos
phplike Development
- Visual studio: Windows will need this software in order to compile C/C++ code, you can download from here http://www.visualstudio.com/zh-tw/downloads/download-visual-studio-vs#DownloadFamilies_4 . Notice! If you install vs2010 Express, it only support 32bit, so you should install the 32bit version Node.js too.