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 !