小编Cro*_*oss的帖子

使用v8 shell中的stringify

我正在创建一个基于v8 shell的控制台,我采用了v8附带的示例代码并且它运行良好,但我正在尝试将v8 ::对象转换为它的字符串版本(json)但是没有找到一个这样做的方式.

这是我在shell.cc中的示例代码:



    v8::Handle test(const v8::Arguments& args) {
        v8::HandleScope handle_scope;
        const char* json;
        v8::String::Utf8Value strJson(args[0]);
        printf(ToCString(json));
        if (args[0]->IsObject()) {
           printf("it's an object\n");
        }
        return v8::String::New("");
    }

Run Code Online (Sandbox Code Playgroud)

在shell中我创建了一个文件test.js:



    var a = {  name: 'John' };
    test(a);

Run Code Online (Sandbox Code Playgroud)

我在shell控制台中执行js后得到这个:



    [object Object]
    It's an object

Run Code Online (Sandbox Code Playgroud)

我想要的是:



    { "name": "John" }

Run Code Online (Sandbox Code Playgroud)

如果我将js代码更改为:



    var a = { name: 'John'}
    test(JSON.stringify(a));

Run Code Online (Sandbox Code Playgroud)

它工作得很好,但我不希望用户必须知道如何将javascript变量解析为json,我不想检查对象的每个输入并手动解析它.

有没有办法在C中的shell.cc代码中执行相同的指令?就像是:



    v8::Handle<v8::String> temp = JSON.parse(arg[0]);

Run Code Online (Sandbox Code Playgroud)

更新:我正在处理这个问题,但我想要一个更清洁的方法来做同样的事情:



    const char* toJson(const v8::Local<v8::Object>& obj) {
       std::stringstream ss;
       ss << "{";
       v8::Local<v8::Array> propertyNames = obj->GetPropertyNames();

       for (int …
Run Code Online (Sandbox Code Playgroud)

javascript v8 stringify

7
推荐指数
1
解决办法
3868
查看次数

分发用C编写的PHP扩展的最简单方法是什么

我为djondb创建了一个扩展,它是一个C++库的包装器,我编译了它,可以从djondb网站下载,我不是PHP专家,我一直遇到一些问题.发布,主要是我意识到我需要为每个平台做每个编译并为每个平台创建一个安装程序,这很费时,我想要的是分享源代码并允许用户以最简单的方式安装它,

我已经尝试过的:

  1. 使用phpize,configure,make,sudo make install用户可以在Linux和Mac上轻松安装库,这个问题是用户需要在他们的计算机上安装g ++,make等,而这个安装过程不会在Windows上工作.
  2. 编译每个平台(Linux x86,x64,Mac,Windows等),并将每个tar.gz上传到站点,用户下载它并将每个文件放在正确的文件夹中.这里的问题是配置过于手动,用户往往会错过一些步骤,而且用户不友好.另一个问题是我需要使用虚拟机编译每个版本,这很费时间.(现在我要包含PHP 5.3和5.4的版本,这意味着要创建所有二进制文件的8个虚拟机)
  3. 我试图在PEAR上创建一个帐户,但注册屏幕总是说我不需要一个帐户用于我正在创建的目的...(似乎这是PEAR系统中的常见问题,但没有找到如何创建帐户建议包裹).
  4. PECL上有一个提案,但没有人回复邮件列表,似乎也很常见.

所以我现在停留在1和2种分发方式,分发使用C++以用户友好的方式创建并易于安装的PHP扩展的最佳方式是什么?

提前感谢,如果您对项目的结构方式或phpize/configure/make过程的完整说明有更多疑问,可以在https://github.com/djondb/djondb_phpext查看项目代码.

php c++ wrapper php-extension

6
推荐指数
1
解决办法
325
查看次数

标签 统计

c++ ×1

javascript ×1

php ×1

php-extension ×1

stringify ×1

v8 ×1

wrapper ×1