2013
Dec
08

在 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了。

base64_encode, base64_decode
  1. require('phplike');
  2.  
  3. var s = base64_encode("test");
  4. print_r(s);
  5. //dGVzdA==
  6.  
  7. s = base64_decode(s);
  8. print_r(s);
  9. //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 第二個參數是指要不要直接將訊息印到螢幕上。

exec
  1. require("phplike");
  2. exec('ls');
  3. /*
  4. output:
  5. base64_encode.js
  6. exec.js
  7. file.js
  8. */
  9.  
  10. var message = exec('echo "test"', false);
  11. print_r(message);

usleep, sleep

sleep 可以使程式停止幾秒鐘,而 usleep 則是可以使程式停止幾微秒。

sleep
  1. require("phplike");
  2. sleep(1);
  3. usleep(1000 * 1000);

檔案處理

file_get_contents, file_put_contents, unlink

  • file_get_contents : 讀取檔案內容
  • file_put_contents : 寫入檔案
  • unlink : 刪除檔案
Example
  1. require('phplike');
  2.  
  3. var content = file_get_contents("file.js");
  4. print_r(content);
  5.  
  6. file_put_contents("tmp", "test");
  7. content = file_get_contents("tmp");
  8. print_r("tmp = " + content);
  9.  
  10. unlink("tmp");

時間處理

time 與 date 在 php 中也算是很常用到的 function ,在 phplike 中直接定義了 time, date 這兩個 function, 也導致不能使用這兩個值來當變數,使用上要特別注意,因為 Node.js 也不會有任何錯誤訊息。

  • time
  • date
Example
  1. require('phplike');
  2. var t = time();
  3. print_r(t);
  4. //1386509426
  5.  
  6. var d = date("Y/m/d");
  7. print_r(d);
  8. //2013/12/08
  9.  
  10. d = date("Y/m/d", 1386008617);
  11. print_r(d);
  12. //2013/12/03

Curl

Example
  1. var php = require("phplike/module.js");
  2. var url = "http://localhost:8080/";
  3. var param = {"type": "xxxx"}; // Send parameter
  4. var header = {"Cookie": "xxx"}; // Send cookie
  5. var c = php.curl_init();
  6. php.curl_setopt(c, 'CURLOPT_URL', url);
  7. php.curl_setopt(c, 'CURLOPT_POST', 1);
  8. php.curl_setopt(c, 'CURLOPT_POSTFIELDS', "a=bbb&c=eee");
  9. php.curl_setopt(c, 'CURLOPT_HTTPHEADER', header);
  10. var res = php.curl_exec(c);
  11. 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 [email protected]:puritys/nodejs-phplike.git
cd nodejs-phplike
npm build ./

phplike 程式原始碼


回應 (Leave a comment)