2011-11-17 36 views
2

我想从C库中包装一个自定义的PHP扩展,现在我有一个初始化函数,它启动一个特定的自定义连接,似乎是昂贵的,我不应该每次运行它调用该函数。包装一个自定义的PHP扩展

让我们假设我有在Zend包装下面,

PHP_FUNCTION(get_data){ 
    conn = conn_init(); 
    data = getdata(conn); 
    return data; 
} 

conn_init()是昂贵的来电来访,我应该在哪里把该功能?

并且我可以让用户从PHP调用conn_init()以及如何操作?

回答

1

看起来你应该将conn换成resource

然后使用您的扩展脚本可能看起来像

$conn = YOUREXT_connect($cparams); 
$data[1] = YOUREXT_getdata($conn, $params[1]); 
$data[2] = YOUREXT_getdata($conn, $params[2]); 
$data[3] = YOUREXT_getdata($conn, $params[3]); 
+0

或者更好,使其面向对象的。 –

+0

这是解决方案之一,但我坚持将连接资源传递给ZEND封装器中的函数。 –