在 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 ./