|
27 | 27 | #include "zend_exceptions.h" |
28 | 28 |
|
29 | 29 | #include "php_spl.h" |
| 30 | +#include "spl_array_arginfo.h" |
30 | 31 | #include "spl_functions.h" |
31 | 32 | #include "spl_engine.h" |
32 | 33 | #include "spl_iterators.h" |
@@ -780,6 +781,10 @@ SPL_METHOD(Array, getArrayCopy) |
780 | 781 | zval *object = ZEND_THIS; |
781 | 782 | spl_array_object *intern = Z_SPLARRAY_P(object); |
782 | 783 |
|
| 784 | + if (zend_parse_parameters_none() == FAILURE) { |
| 785 | + RETURN_THROWS(); |
| 786 | + } |
| 787 | + |
783 | 788 | RETURN_ARR(zend_array_dup(spl_array_get_hash_table(intern))); |
784 | 789 | } /* }}} */ |
785 | 790 |
|
@@ -1196,7 +1201,7 @@ SPL_METHOD(Array, __construct) |
1196 | 1201 | return; /* nothing to do */ |
1197 | 1202 | } |
1198 | 1203 |
|
1199 | | - if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|lC", &array, &ar_flags, &ce_get_iterator) == FAILURE) { |
| 1204 | + if (zend_parse_parameters(ZEND_NUM_ARGS(), "|zlC", &array, &ar_flags, &ce_get_iterator) == FAILURE) { |
1200 | 1205 | RETURN_THROWS(); |
1201 | 1206 | } |
1202 | 1207 |
|
@@ -1225,7 +1230,7 @@ SPL_METHOD(ArrayIterator, __construct) |
1225 | 1230 | return; /* nothing to do */ |
1226 | 1231 | } |
1227 | 1232 |
|
1228 | | - if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|l", &array, &ar_flags) == FAILURE) { |
| 1233 | + if (zend_parse_parameters(ZEND_NUM_ARGS(), "|zl", &array, &ar_flags) == FAILURE) { |
1229 | 1234 | RETURN_THROWS(); |
1230 | 1235 | } |
1231 | 1236 |
|
@@ -1673,7 +1678,7 @@ SPL_METHOD(Array, serialize) |
1673 | 1678 | smart_str buf = {0}; |
1674 | 1679 |
|
1675 | 1680 | if (zend_parse_parameters_none() == FAILURE) { |
1676 | | - return; |
| 1681 | + RETURN_THROWS(); |
1677 | 1682 | } |
1678 | 1683 |
|
1679 | 1684 | PHP_VAR_SERIALIZE_INIT(var_hash); |
@@ -1702,11 +1707,7 @@ SPL_METHOD(Array, serialize) |
1702 | 1707 | /* done */ |
1703 | 1708 | PHP_VAR_SERIALIZE_DESTROY(var_hash); |
1704 | 1709 |
|
1705 | | - if (buf.s) { |
1706 | | - RETURN_NEW_STR(buf.s); |
1707 | | - } |
1708 | | - |
1709 | | - RETURN_NULL(); |
| 1710 | + RETURN_NEW_STR(buf.s); |
1710 | 1711 | } /* }}} */ |
1711 | 1712 |
|
1712 | 1713 | /* {{{ proto void ArrayObject::unserialize(string serialized) |
@@ -1892,122 +1893,69 @@ SPL_METHOD(Array, __unserialize) |
1892 | 1893 | } |
1893 | 1894 | /* }}} */ |
1894 | 1895 |
|
1895 | | -/* {{{ arginfo and function table */ |
1896 | | -ZEND_BEGIN_ARG_INFO_EX(arginfo_array___construct, 0, 0, 0) |
1897 | | - ZEND_ARG_INFO(0, input) |
1898 | | - ZEND_ARG_INFO(0, flags) |
1899 | | - ZEND_ARG_INFO(0, iterator_class) |
1900 | | -ZEND_END_ARG_INFO() |
1901 | | - |
1902 | | -/* ArrayIterator::__construct and ArrayObject::__construct have different signatures */ |
1903 | | -ZEND_BEGIN_ARG_INFO_EX(arginfo_array_iterator___construct, 0, 0, 0) |
1904 | | - ZEND_ARG_INFO(0, array) |
1905 | | - ZEND_ARG_INFO(0, flags) |
1906 | | -ZEND_END_ARG_INFO() |
1907 | | - |
1908 | | -ZEND_BEGIN_ARG_INFO_EX(arginfo_array_offsetGet, 0, 0, 1) |
1909 | | - ZEND_ARG_INFO(0, index) |
1910 | | -ZEND_END_ARG_INFO() |
1911 | | - |
1912 | | -ZEND_BEGIN_ARG_INFO_EX(arginfo_array_offsetSet, 0, 0, 2) |
1913 | | - ZEND_ARG_INFO(0, index) |
1914 | | - ZEND_ARG_INFO(0, newval) |
1915 | | -ZEND_END_ARG_INFO() |
1916 | | - |
1917 | | -ZEND_BEGIN_ARG_INFO(arginfo_array_append, 0) |
1918 | | - ZEND_ARG_INFO(0, value) |
1919 | | -ZEND_END_ARG_INFO() |
1920 | | - |
1921 | | -ZEND_BEGIN_ARG_INFO(arginfo_array_seek, 0) |
1922 | | - ZEND_ARG_INFO(0, position) |
1923 | | -ZEND_END_ARG_INFO() |
1924 | | - |
1925 | | -ZEND_BEGIN_ARG_INFO(arginfo_array_exchangeArray, 0) |
1926 | | - ZEND_ARG_INFO(0, input) |
1927 | | -ZEND_END_ARG_INFO() |
1928 | | - |
1929 | | -ZEND_BEGIN_ARG_INFO(arginfo_array_setFlags, 0) |
1930 | | - ZEND_ARG_INFO(0, flags) |
1931 | | -ZEND_END_ARG_INFO() |
1932 | | - |
1933 | | -ZEND_BEGIN_ARG_INFO(arginfo_array_setIteratorClass, 0) |
1934 | | - ZEND_ARG_INFO(0, iteratorClass) |
1935 | | -ZEND_END_ARG_INFO() |
1936 | | - |
1937 | | -ZEND_BEGIN_ARG_INFO(arginfo_array_uXsort, 0) |
1938 | | - ZEND_ARG_INFO(0, cmp_function) |
1939 | | -ZEND_END_ARG_INFO(); |
1940 | | - |
1941 | | -ZEND_BEGIN_ARG_INFO(arginfo_array_unserialize, 0) |
1942 | | - ZEND_ARG_INFO(0, serialized) |
1943 | | -ZEND_END_ARG_INFO(); |
1944 | | - |
1945 | | -ZEND_BEGIN_ARG_INFO(arginfo_array_void, 0) |
1946 | | -ZEND_END_ARG_INFO() |
1947 | | - |
1948 | 1896 | static const zend_function_entry spl_funcs_ArrayObject[] = { |
1949 | | - SPL_ME(Array, __construct, arginfo_array___construct, ZEND_ACC_PUBLIC) |
1950 | | - SPL_ME(Array, offsetExists, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) |
1951 | | - SPL_ME(Array, offsetGet, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) |
1952 | | - SPL_ME(Array, offsetSet, arginfo_array_offsetSet, ZEND_ACC_PUBLIC) |
1953 | | - SPL_ME(Array, offsetUnset, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) |
1954 | | - SPL_ME(Array, append, arginfo_array_append, ZEND_ACC_PUBLIC) |
1955 | | - SPL_ME(Array, getArrayCopy, arginfo_array_void, ZEND_ACC_PUBLIC) |
1956 | | - SPL_ME(Array, count, arginfo_array_void, ZEND_ACC_PUBLIC) |
1957 | | - SPL_ME(Array, getFlags, arginfo_array_void, ZEND_ACC_PUBLIC) |
1958 | | - SPL_ME(Array, setFlags, arginfo_array_setFlags, ZEND_ACC_PUBLIC) |
1959 | | - SPL_ME(Array, asort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1960 | | - SPL_ME(Array, ksort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1961 | | - SPL_ME(Array, uasort, arginfo_array_uXsort, ZEND_ACC_PUBLIC) |
1962 | | - SPL_ME(Array, uksort, arginfo_array_uXsort, ZEND_ACC_PUBLIC) |
1963 | | - SPL_ME(Array, natsort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1964 | | - SPL_ME(Array, natcasesort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1965 | | - SPL_ME(Array, unserialize, arginfo_array_unserialize, ZEND_ACC_PUBLIC) |
1966 | | - SPL_ME(Array, serialize, arginfo_array_void, ZEND_ACC_PUBLIC) |
1967 | | - SPL_ME(Array, __unserialize, arginfo_array_unserialize, ZEND_ACC_PUBLIC) |
1968 | | - SPL_ME(Array, __serialize, arginfo_array_void, ZEND_ACC_PUBLIC) |
| 1897 | + SPL_ME(Array, __construct, arginfo_class_ArrayObject___construct, ZEND_ACC_PUBLIC) |
| 1898 | + SPL_ME(Array, offsetExists, arginfo_class_ArrayObject_offsetExists, ZEND_ACC_PUBLIC) |
| 1899 | + SPL_ME(Array, offsetGet, arginfo_class_ArrayObject_offsetGet, ZEND_ACC_PUBLIC) |
| 1900 | + SPL_ME(Array, offsetSet, arginfo_class_ArrayObject_offsetSet, ZEND_ACC_PUBLIC) |
| 1901 | + SPL_ME(Array, offsetUnset, arginfo_class_ArrayObject_offsetUnset, ZEND_ACC_PUBLIC) |
| 1902 | + SPL_ME(Array, append, arginfo_class_ArrayObject_append, ZEND_ACC_PUBLIC) |
| 1903 | + SPL_ME(Array, getArrayCopy, arginfo_class_ArrayObject_getArrayCopy, ZEND_ACC_PUBLIC) |
| 1904 | + SPL_ME(Array, count, arginfo_class_ArrayObject_count, ZEND_ACC_PUBLIC) |
| 1905 | + SPL_ME(Array, getFlags, arginfo_class_ArrayObject_getFlags, ZEND_ACC_PUBLIC) |
| 1906 | + SPL_ME(Array, setFlags, arginfo_class_ArrayObject_setFlags, ZEND_ACC_PUBLIC) |
| 1907 | + SPL_ME(Array, asort, arginfo_class_ArrayObject_asort, ZEND_ACC_PUBLIC) |
| 1908 | + SPL_ME(Array, ksort, arginfo_class_ArrayObject_ksort, ZEND_ACC_PUBLIC) |
| 1909 | + SPL_ME(Array, uasort, arginfo_class_ArrayObject_uasort, ZEND_ACC_PUBLIC) |
| 1910 | + SPL_ME(Array, uksort, arginfo_class_ArrayObject_uksort, ZEND_ACC_PUBLIC) |
| 1911 | + SPL_ME(Array, natsort, arginfo_class_ArrayObject_natsort, ZEND_ACC_PUBLIC) |
| 1912 | + SPL_ME(Array, natcasesort, arginfo_class_ArrayObject_natcasesort, ZEND_ACC_PUBLIC) |
| 1913 | + SPL_ME(Array, unserialize, arginfo_class_ArrayObject_unserialize, ZEND_ACC_PUBLIC) |
| 1914 | + SPL_ME(Array, serialize, arginfo_class_ArrayObject_serialize, ZEND_ACC_PUBLIC) |
| 1915 | + SPL_ME(Array, __unserialize, arginfo_class_ArrayObject___unserialize, ZEND_ACC_PUBLIC) |
| 1916 | + SPL_ME(Array, __serialize, arginfo_class_ArrayObject___serialize, ZEND_ACC_PUBLIC) |
1969 | 1917 | /* ArrayObject specific */ |
1970 | | - SPL_ME(Array, getIterator, arginfo_array_void, ZEND_ACC_PUBLIC) |
1971 | | - SPL_ME(Array, exchangeArray, arginfo_array_exchangeArray, ZEND_ACC_PUBLIC) |
1972 | | - SPL_ME(Array, setIteratorClass, arginfo_array_setIteratorClass, ZEND_ACC_PUBLIC) |
1973 | | - SPL_ME(Array, getIteratorClass, arginfo_array_void, ZEND_ACC_PUBLIC) |
| 1918 | + SPL_ME(Array, getIterator, arginfo_class_ArrayObject_getIterator, ZEND_ACC_PUBLIC) |
| 1919 | + SPL_ME(Array, exchangeArray, arginfo_class_ArrayObject_exchangeArray, ZEND_ACC_PUBLIC) |
| 1920 | + SPL_ME(Array, setIteratorClass, arginfo_class_ArrayObject_setIteratorClass, ZEND_ACC_PUBLIC) |
| 1921 | + SPL_ME(Array, getIteratorClass, arginfo_class_ArrayObject_getIteratorClass, ZEND_ACC_PUBLIC) |
1974 | 1922 | PHP_FE_END |
1975 | 1923 | }; |
1976 | 1924 |
|
1977 | 1925 | static const zend_function_entry spl_funcs_ArrayIterator[] = { |
1978 | | - SPL_ME(ArrayIterator, __construct, arginfo_array_iterator___construct, ZEND_ACC_PUBLIC) |
1979 | | - SPL_ME(Array, offsetExists, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) |
1980 | | - SPL_ME(Array, offsetGet, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) |
1981 | | - SPL_ME(Array, offsetSet, arginfo_array_offsetSet, ZEND_ACC_PUBLIC) |
1982 | | - SPL_ME(Array, offsetUnset, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) |
1983 | | - SPL_ME(Array, append, arginfo_array_append, ZEND_ACC_PUBLIC) |
1984 | | - SPL_ME(Array, getArrayCopy, arginfo_array_void, ZEND_ACC_PUBLIC) |
1985 | | - SPL_ME(Array, count, arginfo_array_void, ZEND_ACC_PUBLIC) |
1986 | | - SPL_ME(Array, getFlags, arginfo_array_void, ZEND_ACC_PUBLIC) |
1987 | | - SPL_ME(Array, setFlags, arginfo_array_setFlags, ZEND_ACC_PUBLIC) |
1988 | | - SPL_ME(Array, asort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1989 | | - SPL_ME(Array, ksort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1990 | | - SPL_ME(Array, uasort, arginfo_array_uXsort, ZEND_ACC_PUBLIC) |
1991 | | - SPL_ME(Array, uksort, arginfo_array_uXsort, ZEND_ACC_PUBLIC) |
1992 | | - SPL_ME(Array, natsort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1993 | | - SPL_ME(Array, natcasesort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1994 | | - SPL_ME(Array, unserialize, arginfo_array_unserialize, ZEND_ACC_PUBLIC) |
1995 | | - SPL_ME(Array, serialize, arginfo_array_void, ZEND_ACC_PUBLIC) |
1996 | | - SPL_ME(Array, __unserialize, arginfo_array_unserialize, ZEND_ACC_PUBLIC) |
1997 | | - SPL_ME(Array, __serialize, arginfo_array_void, ZEND_ACC_PUBLIC) |
| 1926 | + SPL_ME(ArrayIterator, __construct, arginfo_class_ArrayIterator___construct, ZEND_ACC_PUBLIC) |
| 1927 | + SPL_ME(Array, offsetExists, arginfo_class_ArrayIterator_offsetExists, ZEND_ACC_PUBLIC) |
| 1928 | + SPL_ME(Array, offsetGet, arginfo_class_ArrayIterator_offsetGet, ZEND_ACC_PUBLIC) |
| 1929 | + SPL_ME(Array, offsetSet, arginfo_class_ArrayIterator_offsetSet, ZEND_ACC_PUBLIC) |
| 1930 | + SPL_ME(Array, offsetUnset, arginfo_class_ArrayIterator_offsetUnset, ZEND_ACC_PUBLIC) |
| 1931 | + SPL_ME(Array, append, arginfo_class_ArrayIterator_append, ZEND_ACC_PUBLIC) |
| 1932 | + SPL_ME(Array, getArrayCopy, arginfo_class_ArrayIterator_getArrayCopy, ZEND_ACC_PUBLIC) |
| 1933 | + SPL_ME(Array, count, arginfo_class_ArrayIterator_count, ZEND_ACC_PUBLIC) |
| 1934 | + SPL_ME(Array, getFlags, arginfo_class_ArrayIterator_getFlags, ZEND_ACC_PUBLIC) |
| 1935 | + SPL_ME(Array, setFlags, arginfo_class_ArrayIterator_setFlags, ZEND_ACC_PUBLIC) |
| 1936 | + SPL_ME(Array, asort, arginfo_class_ArrayIterator_asort, ZEND_ACC_PUBLIC) |
| 1937 | + SPL_ME(Array, ksort, arginfo_class_ArrayIterator_ksort, ZEND_ACC_PUBLIC) |
| 1938 | + SPL_ME(Array, uasort, arginfo_class_ArrayIterator_uasort, ZEND_ACC_PUBLIC) |
| 1939 | + SPL_ME(Array, uksort, arginfo_class_ArrayIterator_uksort, ZEND_ACC_PUBLIC) |
| 1940 | + SPL_ME(Array, natsort, arginfo_class_ArrayIterator_natsort, ZEND_ACC_PUBLIC) |
| 1941 | + SPL_ME(Array, natcasesort, arginfo_class_ArrayIterator_natcasesort, ZEND_ACC_PUBLIC) |
| 1942 | + SPL_ME(Array, unserialize, arginfo_class_ArrayIterator_unserialize, ZEND_ACC_PUBLIC) |
| 1943 | + SPL_ME(Array, serialize, arginfo_class_ArrayIterator_serialize, ZEND_ACC_PUBLIC) |
| 1944 | + SPL_ME(Array, __unserialize, arginfo_class_ArrayIterator___unserialize, ZEND_ACC_PUBLIC) |
| 1945 | + SPL_ME(Array, __serialize, arginfo_class_ArrayIterator___serialize, ZEND_ACC_PUBLIC) |
1998 | 1946 | /* ArrayIterator specific */ |
1999 | | - SPL_ME(Array, rewind, arginfo_array_void, ZEND_ACC_PUBLIC) |
2000 | | - SPL_ME(Array, current, arginfo_array_void, ZEND_ACC_PUBLIC) |
2001 | | - SPL_ME(Array, key, arginfo_array_void, ZEND_ACC_PUBLIC) |
2002 | | - SPL_ME(Array, next, arginfo_array_void, ZEND_ACC_PUBLIC) |
2003 | | - SPL_ME(Array, valid, arginfo_array_void, ZEND_ACC_PUBLIC) |
2004 | | - SPL_ME(Array, seek, arginfo_array_seek, ZEND_ACC_PUBLIC) |
| 1947 | + SPL_ME(Array, rewind, arginfo_class_ArrayIterator_rewind, ZEND_ACC_PUBLIC) |
| 1948 | + SPL_ME(Array, current, arginfo_class_ArrayIterator_current, ZEND_ACC_PUBLIC) |
| 1949 | + SPL_ME(Array, key, arginfo_class_ArrayIterator_key, ZEND_ACC_PUBLIC) |
| 1950 | + SPL_ME(Array, next, arginfo_class_ArrayIterator_next, ZEND_ACC_PUBLIC) |
| 1951 | + SPL_ME(Array, valid, arginfo_class_ArrayIterator_valid, ZEND_ACC_PUBLIC) |
| 1952 | + SPL_ME(Array, seek, arginfo_class_ArrayIterator_seek, ZEND_ACC_PUBLIC) |
2005 | 1953 | PHP_FE_END |
2006 | 1954 | }; |
2007 | 1955 |
|
2008 | 1956 | static const zend_function_entry spl_funcs_RecursiveArrayIterator[] = { |
2009 | | - SPL_ME(Array, hasChildren, arginfo_array_void, ZEND_ACC_PUBLIC) |
2010 | | - SPL_ME(Array, getChildren, arginfo_array_void, ZEND_ACC_PUBLIC) |
| 1957 | + SPL_ME(Array, hasChildren, arginfo_class_RecursiveArrayIterator_hasChildren, ZEND_ACC_PUBLIC) |
| 1958 | + SPL_ME(Array, getChildren, arginfo_class_RecursiveArrayIterator_getChildren, ZEND_ACC_PUBLIC) |
2011 | 1959 | PHP_FE_END |
2012 | 1960 | }; |
2013 | 1961 | /* }}} */ |
|
0 commit comments