【发布时间】:2014-11-20 11:48:55
【问题描述】:
我在 C++ 中开发了一个实用程序,它有一些类和返回向量数组。我需要通过调用 C++ 函数来操作 Php 中的 C++ Vector 数组。
C++ 代码:
class SampleCode
{
vector <string> vecarray;
public:
void setdata()
{
for (int i = 0; i < 100; i++)
{
vecarray.push_Back("This is line number "+ (i+1));
}
}
vector <string> getdata()
{
return vecarray;
}
};
PHP 代码:
//这里需要拿到C++数组,需要把结果格式化成表格。
这如何在 PHP 中实现?
【问题讨论】:
-
如何编写一个 PHP 扩展,将 PHP 与 C++ 实用程序绑定...
-
你可以在这里发布任何示例或链接到执行相同操作的示例。因为我是 PHP 新手,所以我很难做到。
-
我以前从未用 C++ 编写过 PHP 扩展,但我认为我说 php-cpp 足够强大而且相当简单(从我在文档中看到的)是对的)。您真正需要知道的是
zval如何存储字符串(使用Z_STRVAL宏获取char *,然后将其转换为std::string,并将其推送到向量上。可以做同样的事情从向量创建 zval:创建一个哈希表 (==array()),并将每个std::string转换为zval -
我发现 PHP-CPP 只会将 PHP 数组转换为 C++ 数组,反之则不然。所以请帮助我以其他方式进行类型转换。
-
将
std::string转换为char *与普通C++ 相同,要从char *获取zval字符串,有宏。这一切都在 Zend 引擎的黑客指南中,found here