function getErrorMessage(&$stack, $err, $template = false)
    {
        if ($template) {
            $mainmsg = $template;
        } else {
            $mainmsg = $stack->getErrorMessageTemplate($err['code']);
        }
        $mainmsg = str_replace('%__msg%', $err['message'], $mainmsg);
        if (is_array($err['params']) && count($err['params'])) {
            foreach ($err['params'] as $name => $val) {
                if (is_array($val)) {
                    // @ is needed in case $val is a multi-dimensional array
                    $val = @implode(', ', $val);
                }
                if (is_object($val)) {
                    if (method_exists($val, '__toString')) {
                        $val = $val->__toString();
                    } else {
                        PEAR_ErrorStack::staticPush('PEAR_ErrorStack', PEAR_ERRORSTACK_ERR_OBJTOSTRING,
                            'warning', array('obj' => get_class($val)),
                            'object %obj% passed into getErrorMessage, but has no __toString() method');
                        $val = 'Object';
                    }
                }
                $mainmsg = str_replace('%' . $name . '%', $val, $mainmsg);
            }
        }
        return $mainmsg;
    }
function getErrorMessage(&$stack, $err, $template = false)
    {
        if ($template) {
            $mainmsg = $template;
        } else {
            $mainmsg = $stack->getErrorMessageTemplate($err['code']);
        }
        $mainmsg = str_replace('%__msg%', $err['message'], $mainmsg);
        if (is_array($err['params']) && count($err['params'])) {
            foreach ($err['params'] as $name => $val) {
                if (is_array($val)) {
                    // @ is needed in case $val is a multi-dimensional array
                    $val = @implode(', ', $val);
                }
                if (is_object($val)) {
                    if (method_exists($val, '__toString')) {
                        $val = $val->__toString();
                    } else {
                        PEAR_ErrorStack::staticPush('PEAR_ErrorStack', PEAR_ERRORSTACK_ERR_OBJTOSTRING,
                            'warning', array('obj' => get_class($val)),
                            'object %obj% passed into getErrorMessage, but has no __toString() method');
                        $val = 'Object';
                    }
                }
                $mainmsg = str_replace('%' . $name . '%', $val, $mainmsg);
            }
        }
        return $mainmsg;
    }
function getErrorMessage ( & $ stack , $ err , $ template = false ) { if ( $ template ) { $ mainmsg = $ template ; } else { $ mainmsg = $ stack -> getErrorMessageTemplate ( $ err [ 'code' ] ) ; } $ mainmsg = str_replace ( '%__msg%' , $ err [ 'message' ] , $ mainmsg ) ; if ( is_array ( $ err [ 'params' ] ) && count ( $ err [ 'params' ] ) ) { foreach ( $ err [ 'params' ] as $ name => $ val ) { if ( is_array ( $ val ) ) { // @ is needed in case $val is a multi-dimensional array $ val = @ implode ( ', ' , $ val ) ; } if ( is_object ( $ val ) ) { if ( method_exists ( $ val , '__toString' ) ) { $ val = $ val -> __toString ( ) ; } else { PEAR_ErrorStack :: staticPush ( 'PEAR_ErrorStack' , PEAR_ERRORSTACK_ERR_OBJTOSTRING , 'warning' , array ( 'obj' => get_class ( $ val ) ) , 'object %obj% passed into getErrorMessage, but has no __toString() method' ) ; $ val = 'Object' ; } } $ mainmsg = str_replace ( '%' . $ name . '%' , $ val , $ mainmsg ) ; } } return $ mainmsg ; }
Standard error message generation callback

This method may also be called by a custom error message generator
to fill in template values from the params array, simply
set the third parameter to the error message template string to use

The special variable %__msg% is reserved: use it only to specify
where a message passed in by the user should be placed in the template,
like so:

Error message: %msg% - internal error

If the message passed like so:

<code>
$stack->push(ERROR_CODE, 'error', array(), 'server error 500');
</code>

The returned error message will be "Error message: server error 500 -
internal error"
@param PEAR_ErrorStack
@param array
@param string|false Pre-generated error message template
@static
@return string
Standard error message generation callback