当前位置: 首页 > 文档资料 > PHP-X 中文文档 >

Resource

优质
小牛编辑
117浏览
2023-12-01

资源类型,用于保存C/C++指针。

注册

void string_dtor(zend_resource *res)
{
    String *s = static_cast<String *>(res->ptr);
    delete s;
}

extension->registerResource("ResourceString", string_dtor);
  • 使用registerResource注册资源类型,参数一为资源名称,参数二为资源析构函数,用于释放对应的C++指针
  • 析构函数接受一个zend_resource类型的指针,可使用static_cast转为对应类型的指针

创建

Variant v = newResource("ResourceString", new string("hello world"));
  • 使用newResource创建资源类型的PHP变量,第一个参数为资源类型名称,第二个参数为C++指针
  • 需要在C++代码中new一个对象,不得使用栈上的对象指针,否则会发生内存错误

使用

Variant v = args[0];
string *str = v.toResource<string>("ResourceString");
  • Variant变量可以使用toResource方法将变量转为C++的指针