1

我正在从 try...catch 块内拨打肥皂电话,

        $request->l_Request->Year = $year;      
//      $request->l_Request->Period = $period;      
        try {
            /**
             * 
             * perform getMake request
             * @var stdClass
             */
            $response = $client->getSeries($request);    
            $series = $response->getSeriesResult->Lookup_Struc;                                                                                
            return $series;                      
        } catch (SoapFault $exception) {                        
            /**
             * log exception on soap request
             */
            $this->getLogger()->log($exception->getMessage(), Zend_Log::ERR);
            $this->getLogger()->log($exception->getTraceAsString(), Zend_Log::INFO);
            return false;           
        }  catch (Exception $exception) {                           
            /**
             * log exception on soap request
             */
            $this->getLogger()->log($exception->getMessage(), Zend_Log::ERR);
            $this->getLogger()->log($exception->getTraceAsString(), Zend_Log::INFO);
            return false;           
        }  

这是我的输出/错误的样子

( ! ) 致命错误:SOAP-ERROR: Encoding: object has no 'Period' property in C:\wamp\www\FHH\library\Zend\Soap\Client.php on line 1121

但是我无法使用 try catch 捕获肥皂错误,是否有特殊的方法来处理这个问题。

4

1 回答 1

0

我在我的应用程序中使用以下类将错误转换为异常:

class ErrorHandler
{
    public function __construct()
    {
        set_error_handler( array( __CLASS__, 'handleError' ));
    }

    static public function handleError( $errno, $errstr, $errfile,
                                        $errline, array $errcontext )
    {
        throw new ErrorException( $errstr, 0, $errno, $errfile, $errline );
    }
}

您只需要创建它的一个实例:

$errorHandler = new ErrorHandler();

如果您使用的是 ZF1 MVC,另一种方法是将构造函数重命名为__initErrorHandler()并将这两个方法添加到您的引导程序类中。

我已经在使用 的代码中成功地使用了这种方法Zend_Soap_Server,所以希望它也对你有用。

于 2012-05-07T06:07:22.693 回答