Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

130 lines (121 sloc) 4.234 kb
<?php
/**
* This file contains the SOAP_Fault class, used for all error objects in this
* package.
*
* PHP versions 4 and 5
*
* LICENSE: This source file is subject to version 2.02 of the PHP license,
* that is bundled with this package in the file LICENSE, and is available at
* through the world-wide-web at http://www.php.net/license/2_02.txt. If you
* did not receive a copy of the PHP license and are unable to obtain it
* through the world-wide-web, please send a note to license@php.net so we can
* mail you a copy immediately.
*
* @category Web Services
* @package SOAP
* @author Dietrich Ayala <dietrich@ganx4.com> Original Author
* @author Shane Caraveo <Shane@Caraveo.com> Port to PEAR and more
* @author Chuck Hagenbuch <chuck@horde.org> Maintenance
* @author Jan Schneider <jan@horde.org> Maintenance
* @copyright 2003-2006 The PHP Group
* @license http://www.php.net/license/2_02.txt PHP License 2.02
* @link http://pear.php.net/package/SOAP
*/
/** PEAR_Error */
require_once 'PEAR.php';
/**
* PEAR::Error wrapper used to match SOAP Faults to PEAR Errors
*
* SOAP_Fault can provide a complete backtrace of the error. Revealing these
* details in a public web services is a bad idea because it can be used by
* attackers. Thus you have to enable backtrace information in SOAP_Fault
* responses by putting the following code in your script after your
* "require_once 'SOAP/Server.php';" line:
*
* <code>
* $backtrace =& PEAR::getStaticProperty('SOAP_Fault', 'backtrace');
* $backtrace = true;
* </code>
*
* @package SOAP
* @access public
* @author Shane Caraveo <Shane@Caraveo.com> Port to PEAR and more
* @author Dietrich Ayala <dietrich@ganx4.com> Original Author
*/
class SOAP_Fault extends PEAR_Error
{
/**
* Constructor.
*
* @param string $faultstring Message string for fault.
* @param mixed $faultcode The faultcode.
* @param mixed $faultactor
* @param mixed $detail @see PEAR_Error
* @param array $mode @see PEAR_Error
* @param array $options @see PEAR_Error
*/
function SOAP_Fault($faultstring = 'unknown error', $faultcode = 'Client',
$faultactor = null, $detail = null, $mode = null,
$options = null)
{
parent::PEAR_Error($faultstring, $faultcode, $mode, $options, $detail);
if ($faultactor) {
$this->error_message_prefix = $faultactor;
}
}
/**
* Returns a SOAP XML message that can be sent as a server response.
*
* @return string
*/
function message($encoding = SOAP_DEFAULT_ENCODING)
{
$msg = new SOAP_Base();
$params = array();
$params[] = new SOAP_Value('faultcode', 'QName', SOAP_BASE::SOAPENVPrefix().':' . $this->code);
$params[] = new SOAP_Value('faultstring', 'string', $this->message);
$params[] = new SOAP_Value('faultactor', 'anyURI', $this->error_message_prefix);
if (PEAR::getStaticProperty('SOAP_Fault', 'backtrace') &&
isset($this->backtrace)) {
$params[] = new SOAP_Value('detail', 'string', $this->backtrace);
} else {
$params[] = new SOAP_Value('detail', 'string', $this->userinfo);
}
$methodValue = new SOAP_Value('{' . SOAP_ENVELOP . '}Fault', 'Struct', $params);
$headers = null;
return $msg->makeEnvelope($methodValue, $headers, $encoding);
}
/**
* Returns a simple native PHP array containing the fault data.
*
* @return array
*/
function getFault()
{
$fault = new stdClass();
$fault->faultcode = $this->code;
$fault->faultstring = $this->message;
$fault->faultactor = $this->error_message_prefix;
$fault->detail = $this->userinfo;
return $fault;
}
/**
* Returns the SOAP actor for the fault.
*
* @return string
*/
function getActor()
{
return $this->error_message_prefix;
}
/**
* Returns the fault detail.
*
* @return string
*/
function getDetail()
{
return $this->userinfo;
}
}
Jump to Line
Something went wrong with that request. Please try again.