@@ -1971,8 +1971,6 @@ PHP_METHOD(SoapClient, __construct)
1971
1971
RETURN_THROWS ();
1972
1972
}
1973
1973
1974
- SOAP_CLIENT_BEGIN_CODE ();
1975
-
1976
1974
cache_wsdl = SOAP_GLOBAL (cache_enabled ) ? SOAP_GLOBAL (cache_mode ) : 0 ;
1977
1975
1978
1976
if (options != NULL ) {
@@ -1985,7 +1983,8 @@ PHP_METHOD(SoapClient, __construct)
1985
1983
Z_TYPE_P (tmp ) == IS_STRING ) {
1986
1984
ZVAL_STR_COPY (Z_CLIENT_URI_P (this_ptr ), Z_STR_P (tmp ));
1987
1985
} else {
1988
- php_error_docref (NULL , E_ERROR , "'uri' option is required in nonWSDL mode" );
1986
+ zend_argument_value_error (2 , "must provide \"uri\" option as it is required in nonWSDL mode" );
1987
+ RETURN_THROWS ();
1989
1988
}
1990
1989
1991
1990
if ((tmp = zend_hash_str_find (ht , "style" , sizeof ("style" )- 1 )) != NULL &&
@@ -2013,7 +2012,8 @@ PHP_METHOD(SoapClient, __construct)
2013
2012
Z_TYPE_P (tmp ) == IS_STRING ) {
2014
2013
ZVAL_STR_COPY (Z_CLIENT_LOCATION_P (this_ptr ), Z_STR_P (tmp ));
2015
2014
} else if (!wsdl ) {
2016
- php_error_docref (NULL , E_ERROR , "'location' option is required in nonWSDL mode" );
2015
+ zend_argument_value_error (2 , "must provide \"location\" option as it is required in nonWSDL mode" );
2016
+ RETURN_THROWS ();
2017
2017
}
2018
2018
2019
2019
if ((tmp = zend_hash_str_find (ht , "soap_version" , sizeof ("soap_version" )- 1 )) != NULL ) {
@@ -2092,7 +2092,8 @@ PHP_METHOD(SoapClient, __construct)
2092
2092
2093
2093
encoding = xmlFindCharEncodingHandler (Z_STRVAL_P (tmp ));
2094
2094
if (encoding == NULL ) {
2095
- php_error_docref (NULL , E_ERROR , "Invalid 'encoding' option - '%s'" , Z_STRVAL_P (tmp ));
2095
+ zend_argument_value_error (2 , "provided \"encoding\" option \"%s\" is invalid" , Z_STRVAL_P (tmp ));
2096
+ RETURN_THROWS ();
2096
2097
} else {
2097
2098
xmlCharEncCloseFunc (encoding );
2098
2099
ZVAL_STR_COPY (Z_CLIENT_ENCODING_P (this_ptr ), Z_STR_P (tmp ));
@@ -2148,19 +2149,32 @@ PHP_METHOD(SoapClient, __construct)
2148
2149
"The \"ssl_method\" option is deprecated. "
2149
2150
"Use \"ssl\" stream context options instead" );
2150
2151
}
2151
- } else if (!wsdl ) {
2152
- php_error_docref (NULL , E_ERROR , "'location' and 'uri' options are required in nonWSDL mode" );
2152
+ }
2153
+
2154
+ if (options == NULL && wsdl == NULL ) {
2155
+ zend_argument_value_error (2 , "must provide \"uri\" and \"location\" options as they are required in nonWSDL mode" );
2156
+ RETURN_THROWS ();
2153
2157
}
2154
2158
2155
2159
ZVAL_LONG (Z_CLIENT_SOAP_VERSION_P (this_ptr ), soap_version );
2156
2160
2161
+ if (typemap_ht ) {
2162
+ HashTable * typemap = soap_create_typemap (sdl , typemap_ht );
2163
+ if (UNEXPECTED (typemap == NULL )) {
2164
+ RETURN_THROWS ();
2165
+ }
2166
+ ZVAL_ARR (Z_CLIENT_TYPEMAP_P (this_ptr ), typemap );
2167
+ }
2168
+
2157
2169
if (wsdl ) {
2158
2170
int old_soap_version ;
2159
2171
2160
2172
old_soap_version = SOAP_GLOBAL (soap_version );
2161
2173
SOAP_GLOBAL (soap_version ) = soap_version ;
2162
2174
2175
+ SOAP_CLIENT_BEGIN_CODE ();
2163
2176
sdl = get_sdl (this_ptr , ZSTR_VAL (wsdl ), cache_wsdl );
2177
+ SOAP_CLIENT_END_CODE ();
2164
2178
2165
2179
zval * sdl_zval = Z_CLIENT_SDL_P (this_ptr );
2166
2180
if (Z_TYPE_P (sdl_zval ) == IS_OBJECT ) {
@@ -2173,14 +2187,6 @@ PHP_METHOD(SoapClient, __construct)
2173
2187
2174
2188
SOAP_GLOBAL (soap_version ) = old_soap_version ;
2175
2189
}
2176
-
2177
- if (typemap_ht ) {
2178
- HashTable * typemap = soap_create_typemap (sdl , typemap_ht );
2179
- if (typemap ) {
2180
- ZVAL_ARR (Z_CLIENT_TYPEMAP_P (this_ptr ), typemap );
2181
- }
2182
- }
2183
- SOAP_CLIENT_END_CODE ();
2184
2190
}
2185
2191
/* }}} */
2186
2192
0 commit comments