在 Node.js 出来之前,大部分的网站都是使用 PHP 来开发, PHP 的使用上也还算简单,现在开始使用 Node.js 开发后,常常会发现,一些简单的 function,都要去 Google 搜寻半天,每次都搜寻 PHP 对应到 Node.js 的 function,我开发一个 Node.js Package 叫 phplike,让大家可以在 Node.js 上直接使用 PHP function。
先来个简单的范例,base64_encode 在 PHP 算是相当常用的 function ,装了 phplike 之后,就能使用这个 function了。
- require('phplike');
- var s = base64_encode("test");
- print_r(s);
- //dGVzdA==
- s = base64_decode(s);
- print_r(s);
- //test
Node.js - phplike 安装方式
phplike 目前已在 CenterOS 5.8 , pidora. Windows, Mac 等系统下测试过,安装方式是使用 npm 就可以了。
npm install phplike
exec, system, usleep
最初想到开发这个 Library,只是想要使用 exec 这个 function ,虽然说 Node.js 有 require('child_process').exec 这个可以做到我要的功能,但是 child_process 会用另开一个线程的方式去执行,也就是说他是 non-blocking 的执行方式,我一定要给他一个 Callback function ,这个方式会打乱程式执行的流程,有时候只是一个简单的小范例,却为了 exec 而搞得程式很复杂。
现在我解决了这个问题,安装 phplike 就能使用 blocking 模式的 exec, exec 第二个参数是指要不要直接将讯息印到萤幕上。
- require("phplike");
- exec('ls');
- /*
- output:
- base64_encode.js
- exec.js
- file.js
- */
- var message = exec('echo "test"', false);
- print_r(message);
usleep, sleep
sleep 可以使程式停止几秒钟,而 usleep 则是可以使程式停止几微秒。
- require("phplike");
- sleep(1);
- usleep(1000 * 1000);
档案处理
file_get_contents, file_put_contents, unlink
- file_get_contents : 读取档案内容
- file_put_contents : 写入档案
- unlink : 删除档案
- require('phplike');
- var content = file_get_contents("file.js");
- print_r(content);
- file_put_contents("tmp", "test");
- content = file_get_contents("tmp");
- print_r("tmp = " + content);
- unlink("tmp");
时间处理
time 与 date 在 php 中也算是很常用到的 function ,在 phplike 中直接定义了 time, date 这两个 function, 也导致不能使用这两个值来当变数,使用上要特别注意,因为 Node.js 也不会有任何错误讯息。
- time
- date
- require('phplike');
- var t = time();
- print_r(t);
- //1386509426
- var d = date("Y/m/d");
- print_r(d);
- //2013/12/08
- d = date("Y/m/d", 1386008617);
- print_r(d);
- //2013/12/03
Curl
- var php = require("phplike/module.js");
- var url = "http://localhost:8080/";
- var param = {"type": "xxxx"}; // Send parameter
- var header = {"Cookie": "xxx"}; // Send cookie
- 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
其他 PHP function
- str_pad : 数字不足几位数时,补 0
- print_r
- exit
- isset
- is_string
- is_int
- is_object
- is_array
- is_numeric
- is_int
- DOMDocument
自行 Compile C/C++ Code
phplike 内建已经将 C/C++ Code compile 成 binary code ,所以你不用自已去编译程式码,但若你的系统无法正确执行 phplike ,那么你可以自行编译程式,
首先你要安装 node-gyp
sudo npm install -g node-gyp
git clone git@github.com:puritys/nodejs-phplike.git
cd nodejs-phplike
npm build ./