]> granicus.if.org Git - php/commitdiff
Add all the missing parameter types to stubs
authorMáté Kocsis <kocsismate@woohoolabs.com>
Fri, 7 Aug 2020 19:50:02 +0000 (21:50 +0200)
committerMáté Kocsis <kocsismate@woohoolabs.com>
Thu, 13 Aug 2020 12:47:18 +0000 (14:47 +0200)
Closes GH-5955

32 files changed:
ext/dom/php_dom.stub.php
ext/dom/php_dom_arginfo.h
ext/ffi/ffi.c
ext/ffi/ffi.stub.php
ext/ffi/ffi_arginfo.h
ext/gd/gd.stub.php
ext/gd/gd_arginfo.h
ext/pcre/php_pcre.stub.php
ext/pcre/php_pcre_arginfo.h
ext/pdo/pdo_stmt.c
ext/pdo/pdo_stmt.stub.php
ext/pdo/pdo_stmt_arginfo.h
ext/pdo_mysql/tests/bug_61207.phpt
ext/soap/soap.c
ext/soap/soap.stub.php
ext/soap/soap_arginfo.h
ext/soap/tests/fault_warning.phpt
ext/sqlite3/sqlite3.c
ext/sqlite3/sqlite3.stub.php
ext/sqlite3/sqlite3_arginfo.h
ext/standard/basic_functions.stub.php
ext/standard/basic_functions_arginfo.h
ext/standard/filestat.c
ext/standard/tests/file/chgrp.phpt
ext/standard/tests/file/chown.phpt
ext/standard/tests/filters/php_user_filter_01.phpt
ext/standard/tests/filters/php_user_filter_02.phpt
ext/standard/user_filters.c
ext/standard/user_filters.stub.php
ext/standard/user_filters_arginfo.h
ext/zip/php_zip.stub.php
ext/zip/php_zip_arginfo.h

index 3f62210ef62880418246a902216ac3b85e6fb40f..8ed6723250bf89911ca858b97eaebfc32855888d 100644 (file)
@@ -18,10 +18,10 @@ class DOMComment
 
 interface DOMParentNode
 {
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function append(...$nodes): void;
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function prepend(...$nodes): void;
 }
 
@@ -29,13 +29,13 @@ interface DOMChildNode
 {
     public function remove(): void;
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function before(... $nodes): void;
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function after(...$nodes): void;
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function replaceWith(...$nodes): void;
 }
 
@@ -116,10 +116,10 @@ class DOMDocumentFragment implements DOMParentNode
     /** @return bool */
     public function appendXML(string $data) {}
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function append(...$nodes): void {}
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function prepend(...$nodes): void {}
 }
 
@@ -151,15 +151,15 @@ class DOMCharacterData implements DOMChildNode
     /** @return bool */
     public function replaceData(int $offset, int $count, string $data) {}
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function replaceWith(...$nodes): void {}
 
     public function remove(): void {}
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function before(... $nodes): void {}
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function after(...$nodes): void {}
 }
 
@@ -231,19 +231,19 @@ class DOMElement implements DOMParentNode, DOMChildNode
 
     public function remove(): void {}
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function before(... $nodes): void {}
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function after(...$nodes): void {}
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function replaceWith(...$nodes): void {}
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function append(...$nodes): void {}
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function prepend(...$nodes): void {}
 }
 
@@ -348,10 +348,10 @@ class DOMDocument implements DOMParentNode
     /** @return DOMNode|false */
     public function adoptNode(DOMNode $node) {}
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function append(...$nodes): void {}
 
-    /** @var ...DOMNode|string $nodes */
+    /** @param DOMNode|string $nodes */
     public function prepend(...$nodes): void {}
 }
 
index dd50690f59655c2a8e721ff065a2ede22d78fe09..7da82ba710fc1a5fa08cb2cb8f3d6dd8e96c2386 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 3ecc7d640235675f1f573f043e68f11a4fca0bad */
+ * Stub hash: 6d25769eb3f8686042dccc55d8d8bd5e3852676f */
 
 ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_dom_import_simplexml, 0, 1, DOMElement, 1)
        ZEND_ARG_TYPE_INFO(0, node, IS_OBJECT, 0)
index 0be6ba4d4c9be452ac7339650f9f20b238437d5a..4a304fea83ec37b707aa78f63b8197242a4457df 100644 (file)
@@ -3747,7 +3747,7 @@ ZEND_METHOD(FFI, free) /* {{{ */
 ZEND_METHOD(FFI, cast) /* {{{ */
 {
        zend_string *type_def = NULL;
-       zval *ztype = NULL;
+       zend_object *ztype = NULL;
        zend_ffi_type *old_type, *type, *type_ptr;
        zend_ffi_cdata *old_cdata, *cdata;
        zend_bool is_const = 0;
@@ -3756,12 +3756,8 @@ ZEND_METHOD(FFI, cast) /* {{{ */
 
        ZEND_FFI_VALIDATE_API_RESTRICTION();
        ZEND_PARSE_PARAMETERS_START(2, 2)
-               if (Z_TYPE_P(EX_VAR_NUM(0)) == IS_STRING) {
-                       Z_PARAM_STR(type_def)
-               } else {
-                       Z_PARAM_OBJECT_OF_CLASS(ztype, zend_ffi_ctype_ce)
-               }
-               Z_PARAM_ZVAL(zv);
+               Z_PARAM_STR_OR_OBJ_OF_CLASS(type_def, ztype, zend_ffi_ctype_ce)
+               Z_PARAM_ZVAL(zv)
        ZEND_PARSE_PARAMETERS_END();
 
        arg = zv;
@@ -3818,7 +3814,7 @@ ZEND_METHOD(FFI, cast) /* {{{ */
 
                type_ptr = dcl.type;
        } else {
-               zend_ffi_ctype *ctype = (zend_ffi_ctype*)Z_OBJ_P(ztype);
+               zend_ffi_ctype *ctype = (zend_ffi_ctype*) ztype;
 
                type_ptr = type = ctype->type;
                if (ZEND_FFI_TYPE_IS_OWNED(type)) {
index 14b168a6a80d99ffff1dc5bc85df4c18ed07de5a..df2ffc53f1b429eb70817e208e49180c51b96c3d 100644 (file)
@@ -17,10 +17,10 @@ final class FFI
     public static function free(FFI\CData $ptr): void {}
 
     /**
-     * @param FFI\CType|string $type
+     * @param FFI\CData|string|int|null $ptr
      * @prefer-ref $ptr
      */
-    public static function cast($type, $ptr): ?FFI\CData {}
+    public static function cast(FFI\CType|string $type, $ptr): ?FFI\CData {}
 
     public static function type(string $type): ?FFI\CType {}
 
@@ -39,9 +39,9 @@ final class FFI
     public static function alignof(object $ptr): ?int {}
 
     /**
+     * @param FFI\CData|string $src
      * @prefer-ref $dst
      * @prefer-ref $src
-     * @param string|FFI\CData $dst
      */
     public static function memcpy(FFI\CData $dst, $src, int $size): void {}
 
index 7a14a6e12a0a14458595395724f5cb55310cc7e5..7b1f809233a9c7c5246fa7da76dfa7adfc1e84b4 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: e66d306e0dbe08ec3d66935c69ab9e36b9b8165a */
+ * Stub hash: a486305cd865e2798f7d9916760a3ec3c6f114b0 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_class_FFI_cdef, 0, 0, FFI, 0)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, code, IS_STRING, 0, "\"\"")
@@ -25,7 +25,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_FFI_free, 0, 1, IS_VOID, 0
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_class_FFI_cast, 0, 2, FFI\\CData, 1)
-       ZEND_ARG_INFO(0, type)
+       ZEND_ARG_OBJ_TYPE_MASK(0, type, FFI\\CType, MAY_BE_STRING, NULL)
        ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, ptr)
 ZEND_END_ARG_INFO()
 
index deef81f7f94e5096a52271d14ae95a935d373920..7b2e754bad87cdcd396aad25492d0d36fe8026b0 100644 (file)
@@ -224,7 +224,8 @@ function imagettfbbox(float $size, float $angle, string $font_file, string $text
 function imagettftext(GdImage $im, float $size, float $angle, int $x, int $y, int $col, string $font_file, string $text): array|false {}
 #endif
 
-function imagefilter(GdImage $im, int $filtertype, $arg1 = UNKNOWN, $arg2 = UNKNOWN, $arg3 = UNKNOWN, $arg4 = UNKNOWN): bool {}
+/** @param array|int|float|bool $filter_args */
+function imagefilter(GdImage $im, int $filtertype, ...$filter_args): bool {}
 
 function imageconvolution(GdImage $im, array $matrix3x3, float $div, float $offset): bool {}
 
index c489fc0c3cf4edfd776c93f108b81f7aedb02697..ca9ee8942619b3778cd99e281f26678a12321730 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: a792b0c5497013c85cca83c4baab928a5191f3b9 */
+ * Stub hash: 540beb37f18b81102e7977447399757e865285c2 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gd_info, 0, 0, IS_ARRAY, 0)
 ZEND_END_ARG_INFO()
@@ -502,10 +502,7 @@ ZEND_END_ARG_INFO()
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagefilter, 0, 2, _IS_BOOL, 0)
        ZEND_ARG_OBJ_INFO(0, im, GdImage, 0)
        ZEND_ARG_TYPE_INFO(0, filtertype, IS_LONG, 0)
-       ZEND_ARG_INFO(0, arg1)
-       ZEND_ARG_INFO(0, arg2)
-       ZEND_ARG_INFO(0, arg3)
-       ZEND_ARG_INFO(0, arg4)
+       ZEND_ARG_VARIADIC_INFO(0, filter_args)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imageconvolution, 0, 4, _IS_BOOL, 0)
index 97f08eec0fcfa9a443b6afcec1f02243d49d43b3..eb8b4f3b173c93bf484ca87911134be841357c77 100644 (file)
@@ -2,17 +2,25 @@
 
 /** @generate-function-entries */
 
+/** @param array $subpatterns */
 function preg_match(string $pattern, string $subject, &$subpatterns = null, int $flags = 0, int $offset = 0): int|false {}
 
+/** @param array $subpatterns */
 function preg_match_all(string $pattern, string $subject, &$subpatterns = null, int $flags = 0, int $offset = 0): int|false|null {}
 
+/** @param int $count */
 function preg_replace(string|array $regex, string|array $replace, string|array $subject, int $limit = -1, &$count = null): string|array|null {}
 
+/** @param int $count */
 function preg_filter(string|array $regex, string|array $replace, string|array $subject, int $limit = -1, &$count = null): string|array|null {}
 
+/** @param int $count */
 function preg_replace_callback(string|array $regex, callable $callback, string|array $subject, int $limit = -1, &$count = null, int $flags = 0): string|array|null {}
 
-/** @param string|array $subject */
+/**
+ * @param array|string $subject
+ * @param int $count
+ */
 function preg_replace_callback_array(array $pattern, $subject, int $limit = -1, &$count = null, int $flags = 0): string|array|null {}
 
 function preg_split(string $pattern, string $subject, int $limit = -1, int $flags = 0): array|false {}
index 678fdd69a4088031319e3e8ca3e0db52233b7965..42019169107f0e8f4881379dd47f19c5d5b9c0e1 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 88e664fe3f4714ab7760a99bffef5c11eafcf0aa */
+ * Stub hash: 8e8fea5b33408e8a1a39c1b1ae71f16fe1bdd391 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_preg_match, 0, 2, MAY_BE_LONG|MAY_BE_FALSE)
        ZEND_ARG_TYPE_INFO(0, pattern, IS_STRING, 0)
index ac3ee5041ccc6193df9e41beb06a608d01cd2be3..88e8136134f1a963090d3bc2f206bfc69ed8ed88 100644 (file)
@@ -1435,32 +1435,34 @@ PHP_METHOD(PDOStatement, fetchAll)
 }
 /* }}} */
 
-static int register_bound_param(INTERNAL_FUNCTION_PARAMETERS, pdo_stmt_t *stmt, int is_param) /* {{{ */
+static void register_bound_param(INTERNAL_FUNCTION_PARAMETERS, int is_param) /* {{{ */
 {
        struct pdo_bound_param_data param;
        zend_long param_type = PDO_PARAM_STR;
        zval *parameter, *driver_params = NULL;
 
        memset(&param, 0, sizeof(param));
-       param.paramno = -1;
-
-       if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(),
-                       "lz|llz!", &param.paramno, &parameter, &param_type, &param.max_value_len,
-                       &driver_params)) {
-               if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "Sz|llz!", &param.name,
-                               &parameter, &param_type, &param.max_value_len,
-                               &driver_params)) {
-                       return 0;
-               }
-       }
+
+       ZEND_PARSE_PARAMETERS_START(2, 5)
+               Z_PARAM_STR_OR_LONG(param.name, param.paramno)
+               Z_PARAM_ZVAL(parameter)
+               Z_PARAM_OPTIONAL
+               Z_PARAM_LONG(param_type)
+               Z_PARAM_LONG(param.max_value_len)
+               Z_PARAM_ZVAL_OR_NULL(driver_params)
+       ZEND_PARSE_PARAMETERS_END();
+
+       PHP_STMT_GET_OBJ;
 
        param.param_type = (int) param_type;
 
-       if (param.paramno > 0) {
+       if (param.name) {
+               param.paramno = -1;
+       } else if (param.paramno > 0) {
                --param.paramno; /* make it zero-based internally */
-       } else if (!param.name) {
+       } else {
                pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "Columns/Parameters are 1-based");
-               return 0;
+               RETURN_FALSE;
        }
 
        if (driver_params) {
@@ -1472,9 +1474,11 @@ static int register_bound_param(INTERNAL_FUNCTION_PARAMETERS, pdo_stmt_t *stmt,
                if (!Z_ISUNDEF(param.parameter)) {
                        zval_ptr_dtor(&(param.parameter));
                }
-               return 0;
+
+               RETURN_FALSE;
        }
-       return 1;
+
+       RETURN_TRUE;
 } /* }}} */
 
 /* {{{ bind an input parameter to the value of a PHP variable.  $paramno is the 1-based position of the placeholder in the SQL statement (but can be the parameter name for drivers that support named placeholders).  It should be called prior to execute(). */
@@ -1485,22 +1489,22 @@ PHP_METHOD(PDOStatement, bindValue)
        zval *parameter;
 
        memset(&param, 0, sizeof(param));
-       param.paramno = -1;
 
-       if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(),
-                       "lz|l", &param.paramno, &parameter, &param_type)) {
-               if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "Sz|l", &param.name,
-                               &parameter, &param_type)) {
-                       return;
-               }
-       }
+       ZEND_PARSE_PARAMETERS_START(2, 3)
+               Z_PARAM_STR_OR_LONG(param.name, param.paramno)
+               Z_PARAM_ZVAL(parameter)
+               Z_PARAM_OPTIONAL
+               Z_PARAM_LONG(param_type)
+       ZEND_PARSE_PARAMETERS_END();
 
        PHP_STMT_GET_OBJ;
        param.param_type = (int) param_type;
 
-       if (param.paramno > 0) {
+       if (param.name) {
+               param.paramno = -1;
+       } else if (param.paramno > 0) {
                --param.paramno; /* make it zero-based internally */
-       } else if (!param.name) {
+       } else {
                pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "Columns/Parameters are 1-based");
                RETURN_FALSE;
        }
@@ -1520,16 +1524,14 @@ PHP_METHOD(PDOStatement, bindValue)
 /* {{{ bind a parameter to a PHP variable.  $paramno is the 1-based position of the placeholder in the SQL statement (but can be the parameter name for drivers that support named placeholders).  This isn't supported by all drivers.  It should be called prior to execute(). */
 PHP_METHOD(PDOStatement, bindParam)
 {
-       PHP_STMT_GET_OBJ;
-       RETURN_BOOL(register_bound_param(INTERNAL_FUNCTION_PARAM_PASSTHRU, stmt, TRUE));
+       register_bound_param(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
 }
 /* }}} */
 
 /* {{{ bind a column to a PHP variable.  On each row fetch $param will contain the value of the corresponding column.  $column is the 1-based offset of the column, or the column name.  For portability, don't call this before execute(). */
 PHP_METHOD(PDOStatement, bindColumn)
 {
-       PHP_STMT_GET_OBJ;
-       RETURN_BOOL(register_bound_param(INTERNAL_FUNCTION_PARAM_PASSTHRU, stmt, 0));
+       register_bound_param(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
 }
 /* }}} */
 
index d34607de8c1a84fc5dd21c755cc2b14845b484df..c44753387c7bb9de40c1c04613dc54ab4a10db7e 100644 (file)
@@ -5,17 +5,13 @@
 class PDOStatement implements IteratorAggregate
 {
     /** @return bool */
-    public function bindColumn(int|string $column, &$param, int $type = 0, int $maxlen = 0, mixed $driverdata = null) {}
+    public function bindColumn(string|int $column, mixed &$param, int $type = 0, int $maxlen = 0, mixed $driverdata = null) {}
 
     /** @return bool */
-    public function bindParam(int|string $parameter, &$param, int $type = PDO::PARAM_STR, int $maxlen = 0, mixed $driverdata = null) {}
+    public function bindParam(string|int $parameter, mixed &$param, int $type = PDO::PARAM_STR, int $maxlen = 0, mixed $driverdata = null) {}
 
-    /**
-     * @param int|string $parameter
-     * @param mixed $value
-     * @return bool
-     */
-    public function bindValue($parameter, $value, int $type = PDO::PARAM_STR) {}
+    /** @return bool */
+    public function bindValue(string|int $parameter, mixed $value, int $type = PDO::PARAM_STR) {}
 
     /** @return bool */
     public function closeCursor() {}
index 517c15b61471a6d11857d6a7dc2083c869e7954d..f0241a3001b50dca94400c67a193a78f68b5f02e 100644 (file)
@@ -1,25 +1,25 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 1802a0ceaa7be9a7644d1b943d2b7d70be23ec75 */
+ * Stub hash: d64c75660cfc44b582e7dcc20c4ce22e8e0848e1 */
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_bindColumn, 0, 0, 2)
-       ZEND_ARG_TYPE_MASK(0, column, MAY_BE_LONG|MAY_BE_STRING, NULL)
-       ZEND_ARG_INFO(1, param)
+       ZEND_ARG_TYPE_MASK(0, column, MAY_BE_STRING|MAY_BE_LONG, NULL)
+       ZEND_ARG_TYPE_INFO(1, param, IS_MIXED, 0)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "0")
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, maxlen, IS_LONG, 0, "0")
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, driverdata, IS_MIXED, 0, "null")
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_bindParam, 0, 0, 2)
-       ZEND_ARG_TYPE_MASK(0, parameter, MAY_BE_LONG|MAY_BE_STRING, NULL)
-       ZEND_ARG_INFO(1, param)
+       ZEND_ARG_TYPE_MASK(0, parameter, MAY_BE_STRING|MAY_BE_LONG, NULL)
+       ZEND_ARG_TYPE_INFO(1, param, IS_MIXED, 0)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "PDO::PARAM_STR")
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, maxlen, IS_LONG, 0, "0")
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, driverdata, IS_MIXED, 0, "null")
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_bindValue, 0, 0, 2)
-       ZEND_ARG_INFO(0, parameter)
-       ZEND_ARG_INFO(0, value)
+       ZEND_ARG_TYPE_MASK(0, parameter, MAY_BE_STRING|MAY_BE_LONG, NULL)
+       ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "PDO::PARAM_STR")
 ZEND_END_ARG_INFO()
 
index b8a6a21f09ab99e9e991f5a53b4618fc3c419cd9..449af2b67e6c596a1b208f956db7669400ba11eb 100644 (file)
@@ -10,6 +10,7 @@ MySQLPDOTest::skip();
 --FILE--
 <?php
 require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+/** @var PDO $db */
 $db = MySQLPDOTest::factory();
 
 $db->query('DROP TABLE IF EXISTS test');
@@ -19,8 +20,8 @@ $handle1 = $db->prepare('insert into test(id) values(1);
                           select * from test where id = ?;
                           update test set id = 2 where id = ?;');
 
-$handle1->bindValue('1', '1');
-$handle1->bindValue('2', '1');
+$handle1->bindValue(1, '1');
+$handle1->bindValue(2, '1');
 
 $handle1->execute();
 $i = 1;
@@ -34,8 +35,8 @@ do {
 $handle2 = $db->prepare('select * from test where id = ?;
                            update test set id = 1 where id = ?;');
 
-$handle2->bindValue('1', '2');
-$handle2->bindValue('2', '2');
+$handle2->bindValue(1, '2');
+$handle2->bindValue(2, '2');
 
 $handle2->execute();
 
@@ -50,8 +51,8 @@ do {
 $handle3 = $db->prepare('update test set id = 2 where id = ?;
                            select * from test where id = ?;');
 
-$handle3->bindValue('1', '1');
-$handle3->bindValue('2', '2');
+$handle3->bindValue(1, '1');
+$handle3->bindValue(2, '2');
 
 $handle3->execute();
 
@@ -67,8 +68,8 @@ $handle4 = $db->prepare('insert into test(id) values(3);
                            update test set id = 2 where id = ?;
                            select * from test where id = ?;');
 
-$handle4->bindValue('1', '3');
-$handle4->bindValue('2', '2');
+$handle4->bindValue(1, '3');
+$handle4->bindValue(2, '2');
 
 $handle4->execute();
 
index 58b4f037f360eca2b59e8bad1d403bb698b9ee29..de921cde8af4ac5ad61626c998fe5bd9e0f38efd 100644 (file)
@@ -540,15 +540,24 @@ PHP_METHOD(SoapParam, __construct)
 /* {{{ SoapHeader constructor */
 PHP_METHOD(SoapHeader, __construct)
 {
-       zval *data = NULL, *actor = NULL;
+       zval *data = NULL;
+       zend_string *actor_str = NULL;
+       zend_long actor_long;
+       zend_bool actor_is_null = 1;
        char *name, *ns;
        size_t name_len, ns_len;
        zend_bool must_understand = 0;
        zval *this_ptr;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|zbz", &ns, &ns_len, &name, &name_len, &data, &must_understand, &actor) == FAILURE) {
-               RETURN_THROWS();
-       }
+       ZEND_PARSE_PARAMETERS_START(2, 5)
+               Z_PARAM_STRING(ns, ns_len)
+               Z_PARAM_STRING(name, name_len)
+               Z_PARAM_OPTIONAL
+               Z_PARAM_ZVAL(data)
+               Z_PARAM_BOOL(must_understand)
+               Z_PARAM_STR_OR_LONG_OR_NULL(actor_str, actor_long, actor_is_null)
+       ZEND_PARSE_PARAMETERS_END();
+
        if (ns_len == 0) {
                php_error_docref(NULL, E_WARNING, "Invalid namespace");
                return;
@@ -565,16 +574,19 @@ PHP_METHOD(SoapHeader, __construct)
                add_property_zval(this_ptr, "data", data);
        }
        add_property_bool(this_ptr, "mustUnderstand", must_understand);
-       if (actor == NULL) {
-       } else if (Z_TYPE_P(actor) == IS_LONG &&
-         (Z_LVAL_P(actor) == SOAP_ACTOR_NEXT ||
-          Z_LVAL_P(actor) == SOAP_ACTOR_NONE ||
-          Z_LVAL_P(actor) == SOAP_ACTOR_UNLIMATERECEIVER)) {
-               add_property_long(this_ptr, "actor", Z_LVAL_P(actor));
-       } else if (Z_TYPE_P(actor) == IS_STRING && Z_STRLEN_P(actor) > 0) {
-               add_property_stringl(this_ptr, "actor", Z_STRVAL_P(actor), Z_STRLEN_P(actor));
-       } else {
-               php_error_docref(NULL, E_WARNING, "Invalid actor");
+
+       if (actor_str) {
+               if (ZSTR_LEN(actor_str) > 2) {
+                       add_property_stringl(this_ptr, "actor", ZSTR_VAL(actor_str), ZSTR_LEN(actor_str));
+               } else {
+                       php_error_docref(NULL, E_WARNING, "Invalid actor");
+               }
+       } else if (!actor_is_null) {
+               if ((actor_long == SOAP_ACTOR_NEXT || actor_long == SOAP_ACTOR_NONE || actor_long == SOAP_ACTOR_UNLIMATERECEIVER)) {
+                       add_property_long(this_ptr, "actor", actor_long);
+               } else {
+                       php_error_docref(NULL, E_WARNING, "Invalid actor");
+               }
        }
 }
 /* }}} */
@@ -584,36 +596,34 @@ PHP_METHOD(SoapFault, __construct)
 {
        char *fault_string = NULL, *fault_code = NULL, *fault_actor = NULL, *name = NULL, *fault_code_ns = NULL;
        size_t fault_string_len, fault_actor_len = 0, name_len = 0, fault_code_len = 0;
-       zval *code = NULL, *details = NULL, *headerfault = NULL, *this_ptr;
-
-       if (zend_parse_parameters(ZEND_NUM_ARGS(), "zs|s!z!s!z!",
-               &code,
-               &fault_string, &fault_string_len,
-               &fault_actor, &fault_actor_len,
-               &details, &name, &name_len, &headerfault) == FAILURE) {
-               RETURN_THROWS();
-       }
-
-       if (Z_TYPE_P(code) == IS_NULL) {
-       } else if (Z_TYPE_P(code) == IS_STRING) {
-               fault_code = Z_STRVAL_P(code);
-               fault_code_len = Z_STRLEN_P(code);
-       } else if (Z_TYPE_P(code) == IS_ARRAY && zend_hash_num_elements(Z_ARRVAL_P(code)) == 2) {
-               zval *t_ns = zend_hash_index_find(Z_ARRVAL_P(code), 0);
-               zval *t_code = zend_hash_index_find(Z_ARRVAL_P(code), 1);
+       zval *details = NULL, *headerfault = NULL, *this_ptr;
+       zend_string *code_str;
+       HashTable *code_ht;
+
+       ZEND_PARSE_PARAMETERS_START(2, 6)
+               Z_PARAM_STR_OR_ARRAY_HT_OR_NULL(code_str, code_ht)
+               Z_PARAM_STRING(fault_string, fault_string_len)
+               Z_PARAM_OPTIONAL
+               Z_PARAM_STRING_OR_NULL(fault_actor, fault_actor_len)
+               Z_PARAM_ZVAL_OR_NULL(details)
+               Z_PARAM_STRING_OR_NULL(name, name_len)
+               Z_PARAM_ZVAL_OR_NULL(headerfault)
+       ZEND_PARSE_PARAMETERS_END();
+
+       if (code_str) {
+               fault_code = ZSTR_VAL(code_str);
+               fault_code_len = ZSTR_LEN(code_str);
+       } else if (code_ht && zend_hash_num_elements(code_ht) == 2) {
+               zval *t_ns = zend_hash_index_find(code_ht, 0);
+               zval *t_code = zend_hash_index_find(code_ht, 1);
                if (t_ns && t_code && Z_TYPE_P(t_ns) == IS_STRING && Z_TYPE_P(t_code) == IS_STRING) {
                        fault_code_ns = Z_STRVAL_P(t_ns);
                        fault_code = Z_STRVAL_P(t_code);
                        fault_code_len = Z_STRLEN_P(t_code);
-               } else {
-                       php_error_docref(NULL, E_WARNING, "Invalid fault code");
-                       return;
                }
-       } else  {
-               php_error_docref(NULL, E_WARNING, "Invalid fault code");
-               return;
        }
-       if (fault_code != NULL && fault_code_len == 0) {
+
+       if ((code_str || code_ht) && (fault_code == NULL || fault_code_len == 0)) {
                php_error_docref(NULL, E_WARNING, "Invalid fault code");
                return;
        }
@@ -673,20 +683,22 @@ PHP_METHOD(SoapFault, __toString)
 /* {{{ SoapVar constructor */
 PHP_METHOD(SoapVar, __construct)
 {
-       zval *data, *type, *this_ptr;
+       zval *data, *this_ptr;
+       zend_long type;
+       zend_bool type_is_null = 1;
        char *stype = NULL, *ns = NULL, *name = NULL, *namens = NULL;
        size_t stype_len = 0, ns_len = 0, name_len = 0, namens_len = 0;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS(), "z!z|ssss", &data, &type, &stype, &stype_len, &ns, &ns_len, &name, &name_len, &namens, &namens_len) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS(), "z!l!|ssss", &data, &type, &type_is_null, &stype, &stype_len, &ns, &ns_len, &name, &name_len, &namens, &namens_len) == FAILURE) {
                RETURN_THROWS();
        }
 
        this_ptr = ZEND_THIS;
-       if (Z_TYPE_P(type) == IS_NULL) {
+       if (type_is_null) {
                add_property_long(this_ptr, "enc_type", UNKNOWN_TYPE);
        } else {
-               if (zend_hash_index_exists(&SOAP_GLOBAL(defEncIndex), Z_LVAL_P(type))) {
-                       add_property_long(this_ptr, "enc_type", Z_LVAL_P(type));
+               if (zend_hash_index_exists(&SOAP_GLOBAL(defEncIndex), type)) {
+                       add_property_long(this_ptr, "enc_type", type);
                } else {
                        php_error_docref(NULL, E_WARNING, "Invalid type ID");
                        return;
@@ -820,22 +832,19 @@ static HashTable* soap_create_typemap(sdlPtr sdl, HashTable *ht) /* {{{ */
 PHP_METHOD(SoapServer, __construct)
 {
        soapServicePtr service;
-       zval *wsdl = NULL, *options = NULL;
+       zval *options = NULL;
+       zend_string *wsdl;
        zend_resource *res;
        int version = SOAP_1_1;
        zend_long cache_wsdl;
        HashTable *typemap_ht = NULL;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|a", &wsdl, &options) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS(), "S!|a", &wsdl, &options) == FAILURE) {
                RETURN_THROWS();
        }
 
        SOAP_SERVER_BEGIN_CODE();
 
-       if (Z_TYPE_P(wsdl) != IS_STRING && Z_TYPE_P(wsdl) != IS_NULL) {
-               php_error_docref(NULL, E_ERROR, "Invalid parameters");
-       }
-
        service = emalloc(sizeof(soapService));
        memset(service, 0, sizeof(soapService));
        service->send_errors = 1;
@@ -858,7 +867,7 @@ PHP_METHOD(SoapServer, __construct)
                if ((tmp = zend_hash_str_find(ht, "uri", sizeof("uri")-1)) != NULL &&
                    Z_TYPE_P(tmp) == IS_STRING) {
                        service->uri = estrndup(Z_STRVAL_P(tmp), Z_STRLEN_P(tmp));
-               } else if (Z_TYPE_P(wsdl) == IS_NULL) {
+               } else if (!wsdl) {
                        php_error_docref(NULL, E_ERROR, "'uri' option is required in nonWSDL mode");
                }
 
@@ -910,7 +919,7 @@ PHP_METHOD(SoapServer, __construct)
                        }
                }
 
-       } else if (Z_TYPE_P(wsdl) == IS_NULL) {
+       } else if (!wsdl) {
                php_error_docref(NULL, E_ERROR, "'uri' option is required in nonWSDL mode");
        }
 
@@ -919,8 +928,8 @@ PHP_METHOD(SoapServer, __construct)
        service->soap_functions.functions_all = FALSE;
        service->soap_functions.ft = zend_new_array(0);
 
-       if (Z_TYPE_P(wsdl) != IS_NULL) {
-               service->sdl = get_sdl(ZEND_THIS, Z_STRVAL_P(wsdl), cache_wsdl);
+       if (wsdl) {
+               service->sdl = get_sdl(ZEND_THIS, ZSTR_VAL(wsdl), cache_wsdl);
                if (service->uri == NULL) {
                        if (service->sdl->target_ns) {
                                service->uri = estrdup(service->sdl->target_ns);
@@ -1964,7 +1973,8 @@ PHP_FUNCTION(is_soap_fault)
 PHP_METHOD(SoapClient, __construct)
 {
 
-       zval *wsdl, *options = NULL;
+       zval *options = NULL;
+       zend_string *wsdl;
        int  soap_version = SOAP_1_1;
        php_stream_context *context = NULL;
        zend_long cache_wsdl;
@@ -1972,23 +1982,19 @@ PHP_METHOD(SoapClient, __construct)
        HashTable *typemap_ht = NULL;
        zval *this_ptr = ZEND_THIS;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|a", &wsdl, &options) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS(), "S!|a", &wsdl, &options) == FAILURE) {
                RETURN_THROWS();
        }
 
        SOAP_CLIENT_BEGIN_CODE();
 
-       if (Z_TYPE_P(wsdl) != IS_STRING && Z_TYPE_P(wsdl) != IS_NULL) {
-               php_error_docref(NULL, E_ERROR, "$wsdl must be string or null");
-       }
-
        cache_wsdl = SOAP_GLOBAL(cache_enabled) ? SOAP_GLOBAL(cache_mode) : 0;
 
        if (options != NULL) {
                HashTable *ht = Z_ARRVAL_P(options);
                zval *tmp, tmp2;
 
-               if (Z_TYPE_P(wsdl) == IS_NULL) {
+               if (!wsdl) {
                        /* Fetching non-WSDL mode options */
                        if ((tmp = zend_hash_str_find(ht, "uri", sizeof("uri")-1)) != NULL &&
                            Z_TYPE_P(tmp) == IS_STRING) {
@@ -2021,7 +2027,7 @@ PHP_METHOD(SoapClient, __construct)
                if ((tmp = zend_hash_str_find(ht, "location", sizeof("location")-1)) != NULL &&
                    Z_TYPE_P(tmp) == IS_STRING) {
                        add_property_str(this_ptr, "location", zend_string_copy(Z_STR_P(tmp)));
-               } else if (Z_TYPE_P(wsdl) == IS_NULL) {
+               } else if (!wsdl) {
                        php_error_docref(NULL, E_ERROR, "'location' option is required in nonWSDL mode");
                }
 
@@ -2157,20 +2163,20 @@ PHP_METHOD(SoapClient, __construct)
                        Z_TYPE_P(tmp) == IS_LONG) {
                        add_property_long(this_ptr, "_ssl_method", Z_LVAL_P(tmp));
                }
-       } else if (Z_TYPE_P(wsdl) == IS_NULL) {
+       } else if (!wsdl) {
                php_error_docref(NULL, E_ERROR, "'location' and 'uri' options are required in nonWSDL mode");
        }
 
        add_property_long(this_ptr, "_soap_version", soap_version);
 
-       if (Z_TYPE_P(wsdl) != IS_NULL) {
+       if (wsdl) {
                int    old_soap_version;
                zend_resource *res;
 
                old_soap_version = SOAP_GLOBAL(soap_version);
                SOAP_GLOBAL(soap_version) = soap_version;
 
-               sdl = get_sdl(this_ptr, Z_STRVAL_P(wsdl), cache_wsdl);
+               sdl = get_sdl(this_ptr, ZSTR_VAL(wsdl), cache_wsdl);
                res = zend_register_resource(sdl, le_sdl);
 
                add_property_resource(this_ptr, "sdl", res);
index e60ae6954c28aee44eae00a2dc152d7e70de3c68..44f2b01135221666eb3f1017dc72c2b53c025cc1 100644 (file)
@@ -8,32 +8,32 @@ function is_soap_fault(mixed $object): bool {}
 
 class SoapParam
 {
-    public function __construct($data, string $name) {}
+    public function __construct(mixed $data, string $name) {}
 }
 
 class SoapHeader
 {
-    public function __construct(string $namespace, string $name, $data = UNKNOWN, bool $mustunderstand = false, $actor = UNKNOWN) {}
+    public function __construct(string $namespace, string $name, mixed $data = UNKNOWN, bool $mustunderstand = false, string|int|null $actor = null) {}
 }
 
 class SoapFault extends Exception
 {
-    public function __construct($faultcode, string $faultstring, ?string $faultactor = null, $detail = null, ?string $faultname = null, $headerfault = null) {}
+    public function __construct(array|string|null $faultcode, string $faultstring, ?string $faultactor = null, mixed $detail = null, ?string $faultname = null, mixed $headerfault = null) {}
 
     public function __toString(): string {}
 }
 
 class SoapVar
 {
-    public function __construct($data, $encoding, string $type_name = "", string $type_namespace = "", string $node_name = "", string $node_namespace = "") {}
+    public function __construct(mixed $data, ?int $encoding, string $type_name = "", string $type_namespace = "", string $node_name = "", string $node_namespace = "") {}
 }
 
 class SoapServer
 {
-    public function __construct($wsdl, array $options = []) {}
+    public function __construct(?string $wsdl, array $options = []) {}
 
     /** @return void */
-    public function fault(string $code, string $string, string $actor = "", $details = null, string $name = "") {}
+    public function fault(string $code, string $string, string $actor = "", mixed $details = null, string $name = "") {}
 
     /** @return void */
     public function addSoapHeader(SoapHeader $object) {}
@@ -42,7 +42,7 @@ class SoapServer
     public function setPersistence(int $mode) {}
 
     /** @return void */
-    public function setClass(string $class_name, ...$argv) {}
+    public function setClass(string $class_name, mixed ...$argv) {}
 
     /** @return void */
     public function setObject(object $object) {}
@@ -50,7 +50,10 @@ class SoapServer
     /** @return array */
     public function getFunctions() {}
 
-    /** @return void */
+    /**
+     * @param array|string|int $functions
+     * @return void
+     */
     public function addFunction($functions) {}
 
     /** @return void */
@@ -59,13 +62,17 @@ class SoapServer
 
 class SoapClient
 {
-    public function __construct($wsdl, array $options = []) {}
+    public function __construct(?string $wsdl, array $options = []) {}
 
     /** @return mixed */
     public function __call(string $function_name, array $arguments) {}
 
-    /** @return mixed */
-    public function __soapCall(string $function_name, array $arguments, ?array $options = null, $input_headers = null, $output_headers = null) {}
+    /**
+     * @param SoapHeader|array|null $input_headers
+     * @param array $output_headers
+     * @return mixed
+     */
+    public function __soapCall(string $function_name, array $arguments, ?array $options = null, $input_headers = null, &$output_headers = null) {}
 
     /** @return array|null */
     public function __getFunctions() {}
@@ -94,7 +101,10 @@ class SoapClient
     /** @return array */
     public function __getCookies() {}
 
-    /** @return bool */
+    /**
+     * @param SoapHeader|array|null $soapheaders
+     * @return bool
+     */
     public function __setSoapHeaders($soapheaders = null) {}
 
     /** @return string|null */
index b4da9dfbe3f63c566037e065f8d087a09729f5f0..49162a5d0e232c9c39c8ea1c659e266c0d6b8263 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 14076c21ac68b4d1e88c1067e7d1f87373f1669e */
+ * Stub hash: 75e1f968f03aacc08ad7858adff05040ed61e23d */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_use_soap_error_handler, 0, 0, _IS_BOOL, 0)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, handler, _IS_BOOL, 0, "true")
@@ -10,33 +10,33 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_is_soap_fault, 0, 1, _IS_BOOL, 0
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SoapParam___construct, 0, 0, 2)
-       ZEND_ARG_INFO(0, data)
+       ZEND_ARG_TYPE_INFO(0, data, IS_MIXED, 0)
        ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SoapHeader___construct, 0, 0, 2)
        ZEND_ARG_TYPE_INFO(0, namespace, IS_STRING, 0)
        ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0)
-       ZEND_ARG_INFO(0, data)
+       ZEND_ARG_TYPE_INFO(0, data, IS_MIXED, 0)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mustunderstand, _IS_BOOL, 0, "false")
-       ZEND_ARG_INFO(0, actor)
+       ZEND_ARG_TYPE_MASK(0, actor, MAY_BE_STRING|MAY_BE_LONG|MAY_BE_NULL, "null")
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SoapFault___construct, 0, 0, 2)
-       ZEND_ARG_INFO(0, faultcode)
+       ZEND_ARG_TYPE_MASK(0, faultcode, MAY_BE_ARRAY|MAY_BE_STRING|MAY_BE_NULL, NULL)
        ZEND_ARG_TYPE_INFO(0, faultstring, IS_STRING, 0)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, faultactor, IS_STRING, 1, "null")
-       ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, detail, "null")
+       ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, detail, IS_MIXED, 0, "null")
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, faultname, IS_STRING, 1, "null")
-       ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, headerfault, "null")
+       ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, headerfault, IS_MIXED, 0, "null")
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_SoapFault___toString, 0, 0, IS_STRING, 0)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SoapVar___construct, 0, 0, 2)
-       ZEND_ARG_INFO(0, data)
-       ZEND_ARG_INFO(0, encoding)
+       ZEND_ARG_TYPE_INFO(0, data, IS_MIXED, 0)
+       ZEND_ARG_TYPE_INFO(0, encoding, IS_LONG, 1)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type_name, IS_STRING, 0, "\"\"")
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type_namespace, IS_STRING, 0, "\"\"")
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, node_name, IS_STRING, 0, "\"\"")
@@ -44,7 +44,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SoapVar___construct, 0, 0, 2)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SoapServer___construct, 0, 0, 1)
-       ZEND_ARG_INFO(0, wsdl)
+       ZEND_ARG_TYPE_INFO(0, wsdl, IS_STRING, 1)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 0, "[]")
 ZEND_END_ARG_INFO()
 
@@ -52,7 +52,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SoapServer_fault, 0, 0, 2)
        ZEND_ARG_TYPE_INFO(0, code, IS_STRING, 0)
        ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, actor, IS_STRING, 0, "\"\"")
-       ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, details, "null")
+       ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, details, IS_MIXED, 0, "null")
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, name, IS_STRING, 0, "\"\"")
 ZEND_END_ARG_INFO()
 
@@ -66,7 +66,7 @@ ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SoapServer_setClass, 0, 0, 1)
        ZEND_ARG_TYPE_INFO(0, class_name, IS_STRING, 0)
-       ZEND_ARG_VARIADIC_INFO(0, argv)
+       ZEND_ARG_VARIADIC_TYPE_INFO(0, argv, IS_MIXED, 0)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SoapServer_setObject, 0, 0, 1)
@@ -96,7 +96,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SoapClient___soapCall, 0, 0, 2)
        ZEND_ARG_TYPE_INFO(0, arguments, IS_ARRAY, 0)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 1, "null")
        ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, input_headers, "null")
-       ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, output_headers, "null")
+       ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, output_headers, "null")
 ZEND_END_ARG_INFO()
 
 #define arginfo_class_SoapClient___getFunctions arginfo_class_SoapServer_getFunctions
index f92cc81b2e2212db9ea0a3b9eefda1182098936e..e43b1d83593f4e9b2f581b38fff003d06ec8fbf5 100644 (file)
@@ -5,7 +5,13 @@ SoapFault class: Invalid Fault code warning given? Can't be an empty string, an
 --FILE--
 <?php
 $fault = new SoapFault("", "message"); // Can't be an empty string
-$fault = new SoapFault(0, "message");  // Can't be a non-string (except for null)
+
+try {
+    new SoapFault(new stdClass(), "message");  // Can't be a non-string (except for null)
+} catch (TypeError $exception) {
+    echo $exception->getMessage() . "\n";
+}
+
 $fault = new SoapFault("Sender", "message");
 echo get_class($fault) . "\n";
 $fault = new SoapFault(null, "message");
@@ -17,8 +23,7 @@ echo get_class($fault);
 ?>
 --EXPECTF--
 Warning: SoapFault::__construct(): Invalid fault code in %s on line %d
-
-Warning: SoapFault::__construct(): Invalid fault code in %s on line %d
+SoapFault::__construct(): Argument #1 ($faultcode) must be of type string|array|null, stdClass given
 SoapFault
 SoapFault
 
index af7304c5f5c35981fba1ef5a9875080f70fce55a..333116d4158ed4893c3d6cf87d0ce695bffdc9c0 100644 (file)
@@ -1761,11 +1761,12 @@ static void sqlite3stmt_bind(INTERNAL_FUNCTION_PARAMETERS)
        param.param_number = -1;
        param.type = SQLITE3_TEXT;
 
-       if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "lz|l", &param.param_number, &parameter, &param.type) == FAILURE) {
-               if (zend_parse_parameters(ZEND_NUM_ARGS(), "Sz|l", &param.name, &parameter, &param.type) == FAILURE) {
-                       RETURN_THROWS();
-               }
-       }
+       ZEND_PARSE_PARAMETERS_START(2, 3)
+               Z_PARAM_STR_OR_LONG(param.name, param.param_number)
+               Z_PARAM_ZVAL(parameter)
+               Z_PARAM_OPTIONAL
+               Z_PARAM_LONG(param.type)
+       ZEND_PARSE_PARAMETERS_END();
 
        SQLITE3_CHECK_INITIALIZED(stmt_obj->db_obj, stmt_obj->initialised, SQLite3);
        SQLITE3_CHECK_INITIALIZED_STMT(stmt_obj->stmt, SQLite3Stmt);
index 1d6357c3e1103efb6dbe38a773c6d9cae13df430..bae34bd0ffebef4486c0075cf7234e8110327874 100644 (file)
@@ -59,13 +59,23 @@ class SQLite3
     /** @return mixed */
     public function querySingle(string $query, bool $entire_row = false) {}
 
-    /** @return bool */
+    /**
+     * @param callable $callback
+     * @return bool
+     */
     public function createFunction(string $name, $callback, int $argument_count = -1, int $flags = 0) {}
 
-    /** @return bool */
+    /**
+     * @param callable $step_callback
+     * @param callable $final_callback
+     * @return bool
+     */
     public function createAggregate(string $name, $step_callback, $final_callback, int $argument_count = -1) {}
 
-    /** @return bool */
+    /**
+     * @param callable $callback
+     * @return bool
+     */
     public function createCollation(string $name, $callback) {}
 
     /** @return resource|false */
@@ -86,10 +96,10 @@ class SQLite3Stmt
     private function __construct(SQLite3 $sqlite3, string $sql) {}
 
     /** @return bool */
-    public function bindParam($param_number, &$param, int $type = SQLITE3_TEXT) {}
+    public function bindParam(string|int $param_number, mixed &$param, int $type = SQLITE3_TEXT) {}
 
     /** @return bool */
-    public function bindValue($param_number, $param, int $type = SQLITE3_TEXT) {}
+    public function bindValue(string|int $param_number, mixed $param, int $type = SQLITE3_TEXT) {}
 
     /** @return bool */
     public function clear() {}
index a723e32ef06c6293d94aa48215d5c23a89f98665..79b0cfbcb13603168f400414bffb27a6ac0e30a4 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: ded6aa03b742cbcf95943a6acb1101a0b700f30c */
+ * Stub hash: cc36f3299089a453fac76179377b68647c33786c */
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3___construct, 0, 0, 1)
        ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
@@ -104,14 +104,14 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3Stmt___construct, 0, 0, 2)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3Stmt_bindParam, 0, 0, 2)
-       ZEND_ARG_INFO(0, param_number)
-       ZEND_ARG_INFO(1, param)
+       ZEND_ARG_TYPE_MASK(0, param_number, MAY_BE_STRING|MAY_BE_LONG, NULL)
+       ZEND_ARG_TYPE_INFO(1, param, IS_MIXED, 0)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "SQLITE3_TEXT")
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3Stmt_bindValue, 0, 0, 2)
-       ZEND_ARG_INFO(0, param_number)
-       ZEND_ARG_INFO(0, param)
+       ZEND_ARG_TYPE_MASK(0, param_number, MAY_BE_STRING|MAY_BE_LONG, NULL)
+       ZEND_ARG_TYPE_INFO(0, param, IS_MIXED, 0)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "SQLITE3_TEXT")
 ZEND_END_ARG_INFO()
 
index 75626971b61fdb0e09ec186656fa701fcf1e3859..2e628b8b742fcf6932f73eece91c2bdbf9505d73 100755 (executable)
@@ -120,6 +120,10 @@ function array_search(mixed $needle, array $haystack, bool $strict = false): int
 /** @prefer-ref $array */
 function extract(array &$array, int $extract_type = EXTR_OVERWRITE, string $prefix = ""): int {}
 
+/**
+ * @param string|array $var_name
+ * @param string|array $var_names
+ */
 function compact($var_name, ...$var_names): array {}
 
 function array_fill(int $start_key, int $num, mixed $val): array {}
@@ -177,34 +181,44 @@ function array_unique(array $array, int $flags = SORT_STRING): array {}
 
 function array_intersect_key(array $array1, array $array2, array ...$arrays): array {}
 
+/** @param array|callable $rest */
 function array_intersect_ukey(array $array1, array $array2, ...$rest): array {}
 
 function array_intersect(array $array1, array $array2, array ...$arrays): array {}
 
+/** @param array|callable $rest */
 function array_uintersect(array $array1, array $array2, ...$rest): array {}
 
 function array_intersect_assoc(array $array1, array $array2, array ...$arrays): array {}
 
+/** @param array|callable $rest */
 function array_uintersect_assoc(array $array1, array $array2, ...$rest): array {}
 
+/** @param array|callable $rest */
 function array_intersect_uassoc(array $array1, array $array2, ...$rest): array {}
 
+/** @param array|callable $rest */
 function array_uintersect_uassoc(array $array1, array $array2, ...$rest): array {}
 
 function array_diff_key(array $array1, array $array2, array ...$arrays): array {}
 
+/** @param array|callable $rest */
 function array_diff_ukey(array $array1, array $array2, ...$rest): array {}
 
 function array_diff(array $array1, array $array2, array ...$arrays): array {}
 
+/** @param array|callable $rest */
 function array_udiff(array $array1, array $array2, ...$rest): array {}
 
 function array_diff_assoc(array $array1, array $array2, array ...$arrays): array {}
 
+/** @param array|callable $rest */
 function array_diff_uassoc(array $array1, array $array2, ...$rest): array {}
 
+/** @param array|callable $rest */
 function array_udiff_assoc(array $array1, array $array2, ...$rest): array {}
 
+/** @param array|callable $rest */
 function array_udiff_uassoc(array $array1, array $array2, ...$rest): array {}
 
 /**
@@ -925,14 +939,14 @@ function stat(string $filename): array|false {}
 
 function lstat(string $filename): array|false {}
 
-function chown(string $filename, $user): bool {}
+function chown(string $filename, string|int $user): bool {}
 
-function chgrp(string $filename, $group): bool {}
+function chgrp(string $filename, string|int $group): bool {}
 
 #if HAVE_LCHOWN
-function lchown(string $filename, $user): bool {}
+function lchown(string $filename, string|int $user): bool {}
 
-function lchgrp(string $filename, $group): bool {}
+function lchgrp(string $filename, string|int $group): bool {}
 #endif
 
 function chmod(string $filename, int $mode): bool {}
index 30d7dad50a922834e1f16d4748f0bcdb8ff00314..20a0170989d678475c965e5c2c06db4d5b06b79a 100755 (executable)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: a26e702dd4b4a98d07d5ed47ae622431ad373123 */
+ * Stub hash: 1c0060ad8608f5245e0b5319879b77510cb81683 */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_time_limit, 0, 1, _IS_BOOL, 0)
        ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0)
@@ -1414,25 +1414,25 @@ ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chown, 0, 2, _IS_BOOL, 0)
        ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
-       ZEND_ARG_INFO(0, user)
+       ZEND_ARG_TYPE_MASK(0, user, MAY_BE_STRING|MAY_BE_LONG, NULL)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chgrp, 0, 2, _IS_BOOL, 0)
        ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
-       ZEND_ARG_INFO(0, group)
+       ZEND_ARG_TYPE_MASK(0, group, MAY_BE_STRING|MAY_BE_LONG, NULL)
 ZEND_END_ARG_INFO()
 
 #if HAVE_LCHOWN
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_lchown, 0, 2, _IS_BOOL, 0)
        ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
-       ZEND_ARG_INFO(0, user)
+       ZEND_ARG_TYPE_MASK(0, user, MAY_BE_STRING|MAY_BE_LONG, NULL)
 ZEND_END_ARG_INFO()
 #endif
 
 #if HAVE_LCHOWN
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_lchgrp, 0, 2, _IS_BOOL, 0)
        ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
-       ZEND_ARG_INFO(0, group)
+       ZEND_ARG_TYPE_MASK(0, group, MAY_BE_STRING|MAY_BE_LONG, NULL)
 ZEND_END_ARG_INFO()
 #endif
 
index d7b690689bec5dfc311661e6e2f557f674e518a9..cb0b406a322c8847832d84011bca9093b81b529f 100644 (file)
@@ -327,7 +327,8 @@ static void php_do_chgrp(INTERNAL_FUNCTION_PARAMETERS, int do_lchgrp) /* {{{ */
 {
        char *filename;
        size_t filename_len;
-       zval *group;
+       zend_string *group_str;
+       zend_long group_long;
 #if !defined(WINDOWS)
        gid_t gid;
        int ret;
@@ -336,7 +337,7 @@ static void php_do_chgrp(INTERNAL_FUNCTION_PARAMETERS, int do_lchgrp) /* {{{ */
 
        ZEND_PARSE_PARAMETERS_START(2, 2)
                Z_PARAM_PATH(filename, filename_len)
-               Z_PARAM_ZVAL(group)
+               Z_PARAM_STR_OR_LONG(group_str, group_long)
        ZEND_PARSE_PARAMETERS_END();
 
        wrapper = php_stream_locate_url_wrapper(filename, NULL, 0);
@@ -344,16 +345,14 @@ static void php_do_chgrp(INTERNAL_FUNCTION_PARAMETERS, int do_lchgrp) /* {{{ */
                if(wrapper && wrapper->wops->stream_metadata) {
                        int option;
                        void *value;
-                       if (Z_TYPE_P(group) == IS_LONG) {
-                               option = PHP_STREAM_META_GROUP;
-                               value = &Z_LVAL_P(group);
-                       } else if (Z_TYPE_P(group) == IS_STRING) {
+                       if (group_str) {
                                option = PHP_STREAM_META_GROUP_NAME;
-                               value = Z_STRVAL_P(group);
+                               value = ZSTR_VAL(group_str);
                        } else {
-                               zend_argument_type_error(2, "must be of type string|int, %s given", zend_zval_type_name(group));
-                               RETURN_THROWS();
+                               option = PHP_STREAM_META_GROUP;
+                               value = &group_long;
                        }
+
                        if(wrapper->wops->stream_metadata(wrapper, filename, option, value, NULL)) {
                                RETURN_TRUE;
                        } else {
@@ -372,16 +371,13 @@ static void php_do_chgrp(INTERNAL_FUNCTION_PARAMETERS, int do_lchgrp) /* {{{ */
        /* We have no native chgrp on Windows, nothing left to do if stream doesn't have own implementation */
        RETURN_FALSE;
 #else
-       if (Z_TYPE_P(group) == IS_LONG) {
-               gid = (gid_t)Z_LVAL_P(group);
-       } else if (Z_TYPE_P(group) == IS_STRING) {
-               if(php_get_gid_by_name(Z_STRVAL_P(group), &gid) != SUCCESS) {
-                       php_error_docref(NULL, E_WARNING, "Unable to find gid for %s", Z_STRVAL_P(group));
+       if (group_str) {
+               if (php_get_gid_by_name(ZSTR_VAL(group_str), &gid) != SUCCESS) {
+                       php_error_docref(NULL, E_WARNING, "Unable to find gid for %s", ZSTR_VAL(group_str));
                        RETURN_FALSE;
                }
        } else {
-               zend_argument_type_error(2, "must be of type string|int, %s given", zend_zval_type_name(group));
-               RETURN_THROWS();
+               gid = (gid_t) group_long;
        }
 
        /* Check the basedir */
@@ -416,11 +412,7 @@ PHP_FUNCTION(chgrp)
 #if HAVE_LCHOWN
 PHP_FUNCTION(lchgrp)
 {
-# if !defined(WINDOWS)
        php_do_chgrp(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
-# else
-       RETURN_FALSE;
-# endif
 }
 #endif
 /* }}} */
@@ -461,7 +453,8 @@ static void php_do_chown(INTERNAL_FUNCTION_PARAMETERS, int do_lchown) /* {{{ */
 {
        char *filename;
        size_t filename_len;
-       zval *user;
+       zend_string *user_str;
+       zend_long user_long;
 #if !defined(WINDOWS)
        uid_t uid;
        int ret;
@@ -470,7 +463,7 @@ static void php_do_chown(INTERNAL_FUNCTION_PARAMETERS, int do_lchown) /* {{{ */
 
        ZEND_PARSE_PARAMETERS_START(2, 2)
                Z_PARAM_PATH(filename, filename_len)
-               Z_PARAM_ZVAL(user)
+               Z_PARAM_STR_OR_LONG(user_str, user_long)
        ZEND_PARSE_PARAMETERS_END();
 
        wrapper = php_stream_locate_url_wrapper(filename, NULL, 0);
@@ -478,16 +471,14 @@ static void php_do_chown(INTERNAL_FUNCTION_PARAMETERS, int do_lchown) /* {{{ */
                if(wrapper && wrapper->wops->stream_metadata) {
                        int option;
                        void *value;
-                       if (Z_TYPE_P(user) == IS_LONG) {
-                               option = PHP_STREAM_META_OWNER;
-                               value = &Z_LVAL_P(user);
-                       } else if (Z_TYPE_P(user) == IS_STRING) {
+                       if (user_str) {
                                option = PHP_STREAM_META_OWNER_NAME;
-                               value = Z_STRVAL_P(user);
+                               value = ZSTR_VAL(user_str);
                        } else {
-                               php_error_docref(NULL, E_WARNING, "Parameter 2 should be string or int, %s given", zend_zval_type_name(user));
-                               RETURN_FALSE;
+                               option = PHP_STREAM_META_OWNER;
+                               value = &user_long;
                        }
+
                        if(wrapper->wops->stream_metadata(wrapper, filename, option, value, NULL)) {
                                RETURN_TRUE;
                        } else {
@@ -507,16 +498,13 @@ static void php_do_chown(INTERNAL_FUNCTION_PARAMETERS, int do_lchown) /* {{{ */
        RETURN_FALSE;
 #else
 
-       if (Z_TYPE_P(user) == IS_LONG) {
-               uid = (uid_t)Z_LVAL_P(user);
-       } else if (Z_TYPE_P(user) == IS_STRING) {
-               if(php_get_uid_by_name(Z_STRVAL_P(user), &uid) != SUCCESS) {
-                       php_error_docref(NULL, E_WARNING, "Unable to find uid for %s", Z_STRVAL_P(user));
+       if (user_str) {
+               if (php_get_uid_by_name(ZSTR_VAL(user_str), &uid) != SUCCESS) {
+                       php_error_docref(NULL, E_WARNING, "Unable to find uid for %s", ZSTR_VAL(user_str));
                        RETURN_FALSE;
                }
        } else {
-               php_error_docref(NULL, E_WARNING, "Parameter 2 should be string or int, %s given", zend_zval_type_name(user));
-               RETURN_FALSE;
+               uid = (uid_t) user_long;
        }
 
        /* Check the basedir */
@@ -552,12 +540,8 @@ PHP_FUNCTION(chown)
 #if HAVE_LCHOWN
 PHP_FUNCTION(lchown)
 {
-# if !defined(WINDOWS)
        RETVAL_TRUE;
        php_do_chown(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
-# else
-       RETURN_FALSE;
-# endif
 }
 #endif
 /* }}} */
index 37ae20d40e1aec84f961eb4e53692bed0d4de018..b94def684a8c6bbc8d8b72a23a97239b422561d6 100644 (file)
@@ -13,5 +13,5 @@ try {
     echo $exception->getMessage() . "\n";
 }
 ?>
---EXPECT--
-chgrp(): Argument #2 ($group) must be of type string|int, null given
+--EXPECTF--
+Warning: chgrp(): No such file or directory in %s on line %d
index 1654e550b6a46e7738c6f4063518254ae8c25e29..05cd4e4d7d4142a2d80705427b64676f51547569 100644 (file)
@@ -11,5 +11,5 @@ chown("sjhgfskhagkfdgskjfhgskfsdgfkdsajf", NULL);
 echo "ALIVE\n";
 ?>
 --EXPECTF--
-Warning: chown(): Parameter 2 should be string or int, null given in %schown.php on line %d
+Warning: chown(): No such file or directory in %s on line %d
 ALIVE
index fb47177f4c65c682715b48fa999145464b358024..fb56857a1846ffaf0eb8c1a3cc48217935681db8 100644 (file)
@@ -14,4 +14,4 @@ class bar extends php_user_filter {
 }
 ?>
 --EXPECTF--
-Fatal error: Declaration of bar::filter($in, $out, &$consumed) must be compatible with php_user_filter::filter($in, $out, &$consumed, $closing) in %s on line %d
+Fatal error: Declaration of bar::filter($in, $out, &$consumed) must be compatible with php_user_filter::filter($in, $out, &$consumed, bool $closing) in %s on line %d
index fd0822153b1a8c22971c0ef1afc863db26690d17..b1a141e6f2be33ad23009494b21a796d6a4f1b9e 100644 (file)
@@ -9,4 +9,4 @@ class foo extends php_user_filter {
 }
 ?>
 --EXPECTF--
-Fatal error: Declaration of foo::filter($in, $out, $consumed, $closing) must be compatible with php_user_filter::filter($in, $out, &$consumed, $closing) in %s on line %d
+Fatal error: Declaration of foo::filter($in, $out, $consumed, $closing) must be compatible with php_user_filter::filter($in, $out, &$consumed, bool $closing) in %s on line %d
index 464f792f2e4bf09654f6cc32a33a7679a68d061a..e60bce56be70f536779cd6899b3818f6144c5ed0 100644 (file)
@@ -41,8 +41,9 @@ static int le_bucket;
 
 PHP_METHOD(php_user_filter, filter)
 {
-       zval *in, *out, *consumed, *closing;
-       if (zend_parse_parameters(ZEND_NUM_ARGS(), "zzzz", &in, &out, &consumed, &closing) == FAILURE) {
+       zval *in, *out, *consumed;
+       zend_bool closing;
+       if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrzb", &in, &out, &consumed, &closing) == FAILURE) {
                RETURN_THROWS();
        }
 }
index 38c66c6bc19aded2bae7c6346880f8c7a693fe23..40657503127f42b35784d78a5ac7c2e12bc1411d 100755 (executable)
@@ -4,8 +4,13 @@
 
 class php_user_filter
 {
-    /** @return int */
-    public function filter($in, $out, &$consumed, $closing) {}
+    /**
+     * @param resource $in
+     * @param resource $out
+     * @param int $consumed
+     * @return int
+     */
+    public function filter($in, $out, &$consumed, bool $closing) {}
 
     /** @return void */
     public function onCreate() {}
index bf4a9189239997df0d92c090a8ee0bc28f199cb0..aabb25c9d1bdc20873ba8320fbcfa5aa28cc7ae1 100644 (file)
@@ -1,11 +1,11 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 1c95e4944aab77be8b65da8a6877738b1f061b69 */
+ * Stub hash: b3876ce9055a9417d0d1db9f97235513740de956 */
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_php_user_filter_filter, 0, 0, 4)
        ZEND_ARG_INFO(0, in)
        ZEND_ARG_INFO(0, out)
        ZEND_ARG_INFO(1, consumed)
-       ZEND_ARG_INFO(0, closing)
+       ZEND_ARG_TYPE_INFO(0, closing, _IS_BOOL, 0)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_php_user_filter_onCreate, 0, 0, 0)
index 4d9ba27f866d92098b6c62e6b0897bafbb9ab17b..01f055f0ab4baa4edf3fa1869ec08a0a70ec710a 100644 (file)
@@ -183,10 +183,18 @@ class ZipArchive
     /** @return bool */
     public function setExternalAttributesIndex(int $index, int $opsys, int $attr, int $flags = 0) {}
 
-    /** @return bool */
+    /**
+     * @param int $opsys
+     * @param int $attr
+     * @return bool
+     */
     public function getExternalAttributesName(string $name, &$opsys, &$attr, int $flags = 0) {}
 
-    /** @return bool */
+    /**
+     * @param int $opsys
+     * @param int $attr
+     * @return bool
+     */
     public function getExternalAttributesIndex(int $index, &$opsys, &$attr, int $flags = 0) {}
 #endif
 
index 25157d8d7bfcef7d9308206a49edab28093a4d1a..87222c9e080756fc61b7509ea3d5e29c1abceb3c 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 95608dd1d6c2ad80ada990a9e939b76dba705d48 */
+ * Stub hash: 880148896a71ad9bd076bb42c735ff1b83cd0731 */
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_zip_open, 0, 0, 1)
        ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)