@@ -1949,8 +1949,6 @@ PHP_METHOD(SoapClient, __construct)
1949
1949
RETURN_THROWS ();
1950
1950
}
1951
1951
1952
- SOAP_CLIENT_BEGIN_CODE ();
1953
-
1954
1952
cache_wsdl = SOAP_GLOBAL (cache_enabled ) ? SOAP_GLOBAL (cache_mode ) : 0 ;
1955
1953
1956
1954
if (options != NULL ) {
@@ -1963,7 +1961,8 @@ PHP_METHOD(SoapClient, __construct)
1963
1961
Z_TYPE_P (tmp ) == IS_STRING ) {
1964
1962
ZVAL_STR_COPY (Z_CLIENT_URI_P (this_ptr ), Z_STR_P (tmp ));
1965
1963
} else {
1966
- php_error_docref (NULL , E_ERROR , "'uri' option is required in nonWSDL mode" );
1964
+ zend_argument_value_error (2 , "must provide \"uri\" option as it is required in nonWSDL mode" );
1965
+ RETURN_THROWS ();
1967
1966
}
1968
1967
1969
1968
if ((tmp = zend_hash_str_find (ht , "style" , sizeof ("style" )- 1 )) != NULL &&
@@ -1991,7 +1990,8 @@ PHP_METHOD(SoapClient, __construct)
1991
1990
Z_TYPE_P (tmp ) == IS_STRING ) {
1992
1991
ZVAL_STR_COPY (Z_CLIENT_LOCATION_P (this_ptr ), Z_STR_P (tmp ));
1993
1992
} else if (!wsdl ) {
1994
- php_error_docref (NULL , E_ERROR , "'location' option is required in nonWSDL mode" );
1993
+ zend_argument_value_error (2 , "must provide \"location\" option as it is required in nonWSDL mode" );
1994
+ RETURN_THROWS ();
1995
1995
}
1996
1996
1997
1997
if ((tmp = zend_hash_str_find (ht , "soap_version" , sizeof ("soap_version" )- 1 )) != NULL ) {
@@ -2070,7 +2070,8 @@ PHP_METHOD(SoapClient, __construct)
2070
2070
2071
2071
encoding = xmlFindCharEncodingHandler (Z_STRVAL_P (tmp ));
2072
2072
if (encoding == NULL ) {
2073
- php_error_docref (NULL , E_ERROR , "Invalid 'encoding' option - '%s'" , Z_STRVAL_P (tmp ));
2073
+ zend_argument_value_error (2 , "provided \"encoding\" option \"%s\" is invalid" , Z_STRVAL_P (tmp ));
2074
+ RETURN_THROWS ();
2074
2075
} else {
2075
2076
xmlCharEncCloseFunc (encoding );
2076
2077
ZVAL_STR_COPY (Z_CLIENT_ENCODING_P (this_ptr ), Z_STR_P (tmp ));
@@ -2126,19 +2127,32 @@ PHP_METHOD(SoapClient, __construct)
2126
2127
"The \"ssl_method\" option is deprecated. "
2127
2128
"Use \"ssl\" stream context options instead" );
2128
2129
}
2129
- } else if (!wsdl ) {
2130
- php_error_docref (NULL , E_ERROR , "'location' and 'uri' options are required in nonWSDL mode" );
2130
+ }
2131
+
2132
+ if (options == NULL && wsdl == NULL ) {
2133
+ zend_argument_value_error (2 , "must provide \"uri\" and \"location\" options as they are required in nonWSDL mode" );
2134
+ RETURN_THROWS ();
2131
2135
}
2132
2136
2133
2137
ZVAL_LONG (Z_CLIENT_SOAP_VERSION_P (this_ptr ), soap_version );
2134
2138
2139
+ if (typemap_ht ) {
2140
+ HashTable * typemap = soap_create_typemap (sdl , typemap_ht );
2141
+ if (UNEXPECTED (typemap == NULL )) {
2142
+ RETURN_THROWS ();
2143
+ }
2144
+ ZVAL_ARR (Z_CLIENT_TYPEMAP_P (this_ptr ), typemap );
2145
+ }
2146
+
2135
2147
if (wsdl ) {
2136
2148
int old_soap_version ;
2137
2149
2138
2150
old_soap_version = SOAP_GLOBAL (soap_version );
2139
2151
SOAP_GLOBAL (soap_version ) = soap_version ;
2140
2152
2153
+ SOAP_CLIENT_BEGIN_CODE ();
2141
2154
sdl = get_sdl (this_ptr , ZSTR_VAL (wsdl ), cache_wsdl );
2155
+ SOAP_CLIENT_END_CODE ();
2142
2156
2143
2157
zval * sdl_zval = Z_CLIENT_SDL_P (this_ptr );
2144
2158
if (Z_TYPE_P (sdl_zval ) == IS_OBJECT ) {
@@ -2151,14 +2165,6 @@ PHP_METHOD(SoapClient, __construct)
2151
2165
2152
2166
SOAP_GLOBAL (soap_version ) = old_soap_version ;
2153
2167
}
2154
-
2155
- if (typemap_ht ) {
2156
- HashTable * typemap = soap_create_typemap (sdl , typemap_ht );
2157
- if (typemap ) {
2158
- ZVAL_ARR (Z_CLIENT_TYPEMAP_P (this_ptr ), typemap );
2159
- }
2160
- }
2161
- SOAP_CLIENT_END_CODE ();
2162
2168
}
2163
2169
/* }}} */
2164
2170
0 commit comments