簡體   English   中英

PHP擴展:如何返回一個新的類對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM