2011-11-17 40 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封裝器中的函數。 –