]> granicus.if.org Git - php/commitdiff
Convert session functions arginfo to php stubs
authorCraig Duncan <php@duncanc.co.uk>
Sat, 10 Aug 2019 15:50:18 +0000 (16:50 +0100)
committerChristoph M. Becker <cmbecker69@gmx.de>
Wed, 18 Sep 2019 08:59:57 +0000 (10:59 +0200)
ext/session/session.c
ext/session/session.stub.php [new file with mode: 0644]
ext/session/session_arginfo.h [new file with mode: 0644]

index aa100289890f9163aaccd9d451830a0c4543db1b..75ac465c7f10072e2fa24fd52bd4ed80d9e449b8 100644 (file)
@@ -38,6 +38,7 @@
 #include "rfc1867.h"
 #include "php_variables.h"
 #include "php_session.h"
+#include "session_arginfo.h"
 #include "ext/standard/php_random.h"
 #include "ext/standard/php_var.h"
 #include "ext/date/php_date.h"
@@ -2667,108 +2668,6 @@ static PHP_FUNCTION(session_register_shutdown)
 }
 /* }}} */
 
-/* {{{ arginfo */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_session_name, 0, 0, 0)
-       ZEND_ARG_INFO(0, name)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_session_module_name, 0, 0, 0)
-       ZEND_ARG_INFO(0, module)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_session_save_path, 0, 0, 0)
-       ZEND_ARG_INFO(0, path)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_session_id, 0, 0, 0)
-       ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_session_create_id, 0, 0, 0)
-       ZEND_ARG_INFO(0, prefix)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_session_regenerate_id, 0, 0, 0)
-       ZEND_ARG_INFO(0, delete_old_session)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_session_decode, 0, 0, 1)
-       ZEND_ARG_INFO(0, data)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_session_void, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_session_set_save_handler, 0, 0, 1)
-       ZEND_ARG_INFO(0, open)
-       ZEND_ARG_INFO(0, close)
-       ZEND_ARG_INFO(0, read)
-       ZEND_ARG_INFO(0, write)
-       ZEND_ARG_INFO(0, destroy)
-       ZEND_ARG_INFO(0, gc)
-       ZEND_ARG_INFO(0, create_sid)
-       ZEND_ARG_INFO(0, validate_sid)
-       ZEND_ARG_INFO(0, update_timestamp)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_session_cache_limiter, 0, 0, 0)
-       ZEND_ARG_INFO(0, cache_limiter)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_session_cache_expire, 0, 0, 0)
-       ZEND_ARG_INFO(0, new_cache_expire)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_session_set_cookie_params, 0, 0, 1)
-       ZEND_ARG_INFO(0, lifetime_or_options)
-       ZEND_ARG_INFO(0, path)
-       ZEND_ARG_INFO(0, domain)
-       ZEND_ARG_INFO(0, secure)
-       ZEND_ARG_INFO(0, httponly)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_session_class_open, 0)
-       ZEND_ARG_INFO(0, save_path)
-       ZEND_ARG_INFO(0, session_name)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_session_class_close, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_session_class_read, 0)
-       ZEND_ARG_INFO(0, key)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_session_class_write, 0)
-       ZEND_ARG_INFO(0, key)
-       ZEND_ARG_INFO(0, val)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_session_class_destroy, 0)
-       ZEND_ARG_INFO(0, key)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_session_class_gc, 0)
-       ZEND_ARG_INFO(0, maxlifetime)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_session_class_create_sid, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_session_class_validateId, 0)
-       ZEND_ARG_INFO(0, key)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_session_class_updateTimestamp, 0)
-       ZEND_ARG_INFO(0, key)
-       ZEND_ARG_INFO(0, val)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_session_start, 0, 0, 0)
-       ZEND_ARG_INFO(0, options) /* array */
-ZEND_END_ARG_INFO()
-/* }}} */
-
 /* {{{ session_functions[]
  */
 static const zend_function_entry session_functions[] = {
@@ -2779,22 +2678,22 @@ static const zend_function_entry session_functions[] = {
        PHP_FE(session_create_id,         arginfo_session_create_id)
        PHP_FE(session_regenerate_id,     arginfo_session_regenerate_id)
        PHP_FE(session_decode,            arginfo_session_decode)
-       PHP_FE(session_encode,            arginfo_session_void)
+       PHP_FE(session_encode,            arginfo_session_encode)
        PHP_FE(session_start,             arginfo_session_start)
-       PHP_FE(session_destroy,           arginfo_session_void)
-       PHP_FE(session_unset,             arginfo_session_void)
-       PHP_FE(session_gc,                arginfo_session_void)
+       PHP_FE(session_destroy,           arginfo_session_destroy)
+       PHP_FE(session_unset,             arginfo_session_unset)
+       PHP_FE(session_gc,                arginfo_session_gc)
        PHP_FE(session_set_save_handler,  arginfo_session_set_save_handler)
        PHP_FE(session_cache_limiter,     arginfo_session_cache_limiter)
        PHP_FE(session_cache_expire,      arginfo_session_cache_expire)
        PHP_FE(session_set_cookie_params, arginfo_session_set_cookie_params)
-       PHP_FE(session_get_cookie_params, arginfo_session_void)
-       PHP_FE(session_write_close,       arginfo_session_void)
-       PHP_FE(session_abort,             arginfo_session_void)
-       PHP_FE(session_reset,             arginfo_session_void)
-       PHP_FE(session_status,            arginfo_session_void)
-       PHP_FE(session_register_shutdown, arginfo_session_void)
-       PHP_FALIAS(session_commit, session_write_close, arginfo_session_void)
+       PHP_FE(session_get_cookie_params, arginfo_session_get_cookie_params)
+       PHP_FE(session_write_close,       arginfo_session_write_close)
+       PHP_FE(session_abort,             arginfo_session_abort)
+       PHP_FE(session_reset,             arginfo_session_reset)
+       PHP_FE(session_status,            arginfo_session_status)
+       PHP_FE(session_register_shutdown, arginfo_session_register_shutdown)
+       PHP_FALIAS(session_commit, session_write_close, arginfo_session_commit)
        PHP_FE_END
 };
 /* }}} */
@@ -2802,12 +2701,12 @@ static const zend_function_entry session_functions[] = {
 /* {{{ SessionHandlerInterface functions[]
 */
 static const zend_function_entry php_session_iface_functions[] = {
-       PHP_ABSTRACT_ME(SessionHandlerInterface, open, arginfo_session_class_open)
-       PHP_ABSTRACT_ME(SessionHandlerInterface, close, arginfo_session_class_close)
-       PHP_ABSTRACT_ME(SessionHandlerInterface, read, arginfo_session_class_read)
-       PHP_ABSTRACT_ME(SessionHandlerInterface, write, arginfo_session_class_write)
-       PHP_ABSTRACT_ME(SessionHandlerInterface, destroy, arginfo_session_class_destroy)
-       PHP_ABSTRACT_ME(SessionHandlerInterface, gc, arginfo_session_class_gc)
+       PHP_ABSTRACT_ME(SessionHandlerInterface, open, arginfo_class_SessionHandlerInterface_open)
+       PHP_ABSTRACT_ME(SessionHandlerInterface, close, arginfo_class_SessionHandlerInterface_close)
+       PHP_ABSTRACT_ME(SessionHandlerInterface, read, arginfo_class_SessionHandlerInterface_read)
+       PHP_ABSTRACT_ME(SessionHandlerInterface, write, arginfo_class_SessionHandlerInterface_write)
+       PHP_ABSTRACT_ME(SessionHandlerInterface, destroy, arginfo_class_SessionHandlerInterface_destroy)
+       PHP_ABSTRACT_ME(SessionHandlerInterface, gc, arginfo_class_SessionHandlerInterface_gc)
        PHP_FE_END
 };
 /* }}} */
@@ -2815,7 +2714,7 @@ static const zend_function_entry php_session_iface_functions[] = {
 /* {{{ SessionIdInterface functions[]
 */
 static const zend_function_entry php_session_id_iface_functions[] = {
-       PHP_ABSTRACT_ME(SessionIdInterface, create_sid, arginfo_session_class_create_sid)
+       PHP_ABSTRACT_ME(SessionIdInterface, create_sid, arginfo_class_SessionIdInterface_create_sid)
        PHP_FE_END
 };
 /* }}} */
@@ -2823,8 +2722,8 @@ static const zend_function_entry php_session_id_iface_functions[] = {
 /* {{{ SessionUpdateTimestampHandler functions[]
  */
 static const zend_function_entry php_session_update_timestamp_iface_functions[] = {
-       PHP_ABSTRACT_ME(SessionUpdateTimestampHandlerInterface, validateId, arginfo_session_class_validateId)
-       PHP_ABSTRACT_ME(SessionUpdateTimestampHandlerInterface, updateTimestamp, arginfo_session_class_updateTimestamp)
+       PHP_ABSTRACT_ME(SessionUpdateTimestampHandlerInterface, validateId, arginfo_class_SessionUpdateTimestampHandlerInterface_validateId)
+       PHP_ABSTRACT_ME(SessionUpdateTimestampHandlerInterface, updateTimestamp, arginfo_class_SessionUpdateTimestampHandlerInterface_updateTimestamp)
        PHP_FE_END
 };
 /* }}} */
@@ -2832,13 +2731,13 @@ static const zend_function_entry php_session_update_timestamp_iface_functions[]
 /* {{{ SessionHandler functions[]
  */
 static const zend_function_entry php_session_class_functions[] = {
-       PHP_ME(SessionHandler, open, arginfo_session_class_open, ZEND_ACC_PUBLIC)
-       PHP_ME(SessionHandler, close, arginfo_session_class_close, ZEND_ACC_PUBLIC)
-       PHP_ME(SessionHandler, read, arginfo_session_class_read, ZEND_ACC_PUBLIC)
-       PHP_ME(SessionHandler, write, arginfo_session_class_write, ZEND_ACC_PUBLIC)
-       PHP_ME(SessionHandler, destroy, arginfo_session_class_destroy, ZEND_ACC_PUBLIC)
-       PHP_ME(SessionHandler, gc, arginfo_session_class_gc, ZEND_ACC_PUBLIC)
-       PHP_ME(SessionHandler, create_sid, arginfo_session_class_create_sid, ZEND_ACC_PUBLIC)
+       PHP_ME(SessionHandler, open, arginfo_class_SessionHandlerInterface_open, ZEND_ACC_PUBLIC)
+       PHP_ME(SessionHandler, close, arginfo_class_SessionHandlerInterface_close, ZEND_ACC_PUBLIC)
+       PHP_ME(SessionHandler, read, arginfo_class_SessionHandlerInterface_read, ZEND_ACC_PUBLIC)
+       PHP_ME(SessionHandler, write, arginfo_class_SessionHandlerInterface_write, ZEND_ACC_PUBLIC)
+       PHP_ME(SessionHandler, destroy, arginfo_class_SessionHandlerInterface_destroy, ZEND_ACC_PUBLIC)
+       PHP_ME(SessionHandler, gc, arginfo_class_SessionHandlerInterface_gc, ZEND_ACC_PUBLIC)
+       PHP_ME(SessionHandler, create_sid, arginfo_class_SessionIdInterface_create_sid, ZEND_ACC_PUBLIC)
        PHP_FE_END
 };
 /* }}} */
diff --git a/ext/session/session.stub.php b/ext/session/session.stub.php
new file mode 100644 (file)
index 0000000..51c5b47
--- /dev/null
@@ -0,0 +1,92 @@
+<?php
+
+/** @return string|false */
+function session_name(string $name = UNKNOWN) {}
+
+/** @return string|false */
+function session_module_name(string $module = UNKNOWN) {}
+
+/** @return string|false */
+function session_save_path(string $path = UNKNOWN) {}
+
+/** @return string|false */
+function session_id(string $id = UNKNOWN) {}
+
+/** @return string|false */
+function session_create_id(string $prefix = "") {}
+
+function session_regenerate_id(bool $delete_old_session = false): bool {}
+
+function session_decode(string $data): bool {}
+
+/** @return string|false */
+function session_encode() {}
+
+function session_destroy(): bool {}
+
+function session_unset(): bool {}
+
+/** @return int|false */
+function session_gc() {}
+
+function session_get_cookie_params(): array {}
+
+function session_write_close(): bool {}
+
+function session_abort(): bool {}
+
+function session_reset(): bool {}
+
+function session_status(): int {}
+
+function session_register_shutdown(): void {}
+
+function session_commit(): bool {}
+
+function session_set_save_handler($open, $close = null, $read = null, $write = null, $destroy = null, $gc = null, $create_sid = null, $validate_sid = null, $update_timestamp = null): bool {}
+
+/** @return string|false */
+function session_cache_limiter(string $cache_limiter = UNKNOWN) {}
+
+/** @return int|false */
+function session_cache_expire(?int $new_cache_expire = null) {}
+
+function session_set_cookie_params($lifetime_or_options, string $path = UNKNOWN, string $domain  = "", ?bool $secure = null, ?bool $httponly = null): bool {}
+
+function session_start(array $options = []): bool {}
+
+interface SessionHandlerInterface
+{
+    /** @return bool */
+    function open(string $save_path, string $session_name);
+
+    /** @return bool */
+    function close();
+
+    /** @return string */
+    function read(string $key);
+
+    /** @return bool */
+    function write(string $key, string $val);
+
+    /** @return bool */
+    function destroy(string $key);
+
+    /** @return int|bool */
+    function gc(int $maxlifetime);
+}
+
+interface SessionIdInterface
+{
+    /** @return string */
+    function create_sid();
+}
+
+interface SessionUpdateTimestampHandlerInterface
+{
+    /** @return bool */
+    function validateId(string $key);
+
+    /** @return bool */
+    function updateTimestamp(string $key, string $val);
+}
diff --git a/ext/session/session_arginfo.h b/ext/session/session_arginfo.h
new file mode 100644 (file)
index 0000000..f13a641
--- /dev/null
@@ -0,0 +1,116 @@
+/* This is a generated file, edit the .stub.php file instead. */
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_session_name, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_session_module_name, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, module, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_session_save_path, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_session_id, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, id, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_session_create_id, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, prefix, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_session_regenerate_id, 0, 0, _IS_BOOL, 0)
+       ZEND_ARG_TYPE_INFO(0, delete_old_session, _IS_BOOL, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_session_decode, 0, 1, _IS_BOOL, 0)
+       ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_session_encode, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_session_destroy, 0, 0, _IS_BOOL, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_session_unset arginfo_session_destroy
+
+#define arginfo_session_gc arginfo_session_encode
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_session_get_cookie_params, 0, 0, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_session_write_close arginfo_session_destroy
+
+#define arginfo_session_abort arginfo_session_destroy
+
+#define arginfo_session_reset arginfo_session_destroy
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_session_status, 0, 0, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_session_register_shutdown, 0, 0, IS_VOID, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_session_commit arginfo_session_destroy
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_session_set_save_handler, 0, 1, _IS_BOOL, 0)
+       ZEND_ARG_INFO(0, open)
+       ZEND_ARG_INFO(0, close)
+       ZEND_ARG_INFO(0, read)
+       ZEND_ARG_INFO(0, write)
+       ZEND_ARG_INFO(0, destroy)
+       ZEND_ARG_INFO(0, gc)
+       ZEND_ARG_INFO(0, create_sid)
+       ZEND_ARG_INFO(0, validate_sid)
+       ZEND_ARG_INFO(0, update_timestamp)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_session_cache_limiter, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, cache_limiter, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_session_cache_expire, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, new_cache_expire, IS_LONG, 1)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_session_set_cookie_params, 0, 1, _IS_BOOL, 0)
+       ZEND_ARG_INFO(0, lifetime_or_options)
+       ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, domain, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, secure, _IS_BOOL, 1)
+       ZEND_ARG_TYPE_INFO(0, httponly, _IS_BOOL, 1)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_session_start, 0, 0, _IS_BOOL, 0)
+       ZEND_ARG_TYPE_INFO(0, options, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SessionHandlerInterface_open, 0, 0, 2)
+       ZEND_ARG_TYPE_INFO(0, save_path, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, session_name, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SessionHandlerInterface_close arginfo_session_encode
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SessionHandlerInterface_read, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SessionHandlerInterface_write, 0, 0, 2)
+       ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, val, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SessionHandlerInterface_destroy arginfo_class_SessionHandlerInterface_read
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SessionHandlerInterface_gc, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, maxlifetime, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_SessionIdInterface_create_sid arginfo_session_encode
+
+#define arginfo_class_SessionUpdateTimestampHandlerInterface_validateId arginfo_class_SessionHandlerInterface_read
+
+#define arginfo_class_SessionUpdateTimestampHandlerInterface_updateTimestamp arginfo_class_SessionHandlerInterface_write