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)