Index: Zend/Json/Server.php =================================================================== --- Zend/Json/Server.php (revision 21613) +++ Zend/Json/Server.php (working copy) @@ -526,6 +526,37 @@ $params = $this->_getDefaultParams($params, $serviceParams); } + //Make sure named parameters are passed in correct order + if( is_string( key( $params ) ) ) { + + $callback = $invocable->getCallback(); + if( 'function' == $callback->getType() ) { + $reflection = new ReflectionFunction( $callback->getFunction() ); + $refParams = $reflection->getParameters(); + } else { + + $reflection = new ReflectionMethod( + $callback->getClass(), + $callback->getMethod() + ); + $refParams = $reflection->getParameters(); + } + + $newParams = array(); + foreach( $reflection->getParameters() as $refParam ) { + if( isset( $params[ $refParam->getName() ] ) ) { + $newParams[ $refParam->getName() ] = $params[ $refParam->getName() ]; + } elseif( $refParam->isOptional() ) { + $newParams[ $refParam->getName() ] = null; + } else { + throw new Zend_Server_Exception( + 'Missing required parameter: ' . $refParam->getName() + ); + } + } + $params = $newParams; + } + try { $result = $this->_dispatch($invocable, $params); } catch (Exception $e) {