KevinB: Herrjeh!

Beitrag lesen

Ich habe die ganze Deklarationen mal eingebaut, also für jede Funktion sowas wie:

ZEND_BEGIN_ARG_INFO_EX(arginfo_saprfc_open, 0, 0, 1)
    ZEND_ARG_INFO(0, param1)
ZEND_END_ARG_INFO()

Für mehrere Parameter z.B.

ZEND_BEGIN_ARG_INFO_EX(arginfo_saprfc_optional, 0, 0, 3)
    ZEND_ARG_INFO(0, param1)
    ZEND_ARG_INFO(0, param2)
    ZEND_ARG_INFO(0, param3)
ZEND_END_ARG_INFO()

Und ich hab die Funktionsdefinition dann entsprechend angepasst von bspw.

PHP_FE(saprfc_open,    NULL)

auf

ZEND_FE(saprfc_open,    arginfo_saprfc_open)

Nachdem Kompilieren tauchen jetzt keine Warnungen mehr auf...

Aber es funktioniert leider noch immer nicht:

Fatal error: Uncaught TypeError: saprfc_table_read(): 
Argument #3 ($param3) must be of type unknown, 
int given in /srv/www/htdocs/saptest.php:31

Nachdem ich nicht verstehe, warum beim dritten Parameter "unknown" erwartet wird, denn

PHP_FUNCTION(saprfc_table_read)
{
    zval *fce;
    zend_string *name;
    zend_long index;

"zend_long" ist doch int und bei der Prüfung

    if (zend_parse_parameters(ZEND_NUM_ARGS(), "rSL", &fce, &name, &index) == FAILURE) {
        return;
    }

wird der dritte Parameter dann plötzlich als "Unknown" erwartet???

Nachdem ich den dritten Parameter bei der Prüfung auf optional gesetzt habe ("rS|l"), funktioniert jetzt zum ersten Mal eine Testfunktion.

Jetzt noch alle anderen Funktionen testen (zumindest die, die ich brauche) und dann endlich fertig !