[英]PHP Extension: How to return a new class object
我正在創建具有多個類的擴展,其中一些具有應返回另一個類的實例的方法。 這適用於PHP 7+,而不適用於其他任何東西。
例如,我需要PHP代碼像這樣(我正在創建ALPM PHP擴展)...
$handle_object = new Handle("/", "/var/lib/pacman");
$db_object = $handle_object->get_localdb() /* this returns a Db object */
到目前為止,我的代碼是...
PHP_METHOD(Handle, get_localdb) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "") == FAILURE) {
RETURN_NULL()
}
zval *db_obj = (zval*)emalloc(sizeof(zval));
handle_object *intern = Z_HANDLEO_P(getThis());
object_init_ex(db_obj, alpm_ce_db);
}
我不知道是在正確的軌道上還是遠離它。
有關該項目的更多代碼(到目前為止),我已將其發布在gist( https://gist.github.com/markzz/27b0aa1123d61a5f9d80ee3aea390f20 )上。
在php聊天的幫助下(謝謝大家)!
PHP_METHOD(Handle, get_localdb) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "") == FAILURE) {
RETURN_NULL()
}
handle_object *intern = Z_HANDLEO_P(getThis());
db_object *db;
object_init_ex(return_value, alpm_ce_db);
db = Z_DBO_P(return_value);
db->db = alpm_get_localdb(intern->handle);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.