php symfony异常处理/错误处理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php symfony异常处理/错误处理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2456字,纯文字阅读大概需要4分钟。
内容图文
![php symfony异常处理/错误处理](/upload/InfoBanner/zyjiaocheng/652/5646a66493504f1dbdc42051fdd44992.jpg)
在使用nusoap的symfony应用程序上工作(这是将soap work与php / symfony集成的最佳方法吗?)来进行信用卡付款.
我在下面简化了我的代码示例.
我正在努力的是处理异常的最佳方法.以下示例仅具有1个自定义异常(我的自定义异常应位于symfony的目录结构中的什么位置?(lib / exception?).)但是,当有几种不同类型的异常处理特定错误时会发生什么?具有20个奇数异常的try / catch块不是很优雅.
我也不确定应该在哪里投掷和接住.我需要设置一些用户闪烁以警告用户任何问题,因此我认为捕获应该在动作控制器中完成,而不是在处理soap调用的类中完成.
谁能告诉我可能要去哪里了吗?
我讨厌凌乱的代码/解决方案,并希望尽可能坚持DRY原则.我想我可能还缺少一些内置的symfony功能,这些功能可能对此有所帮助,但是每当我搜索时,我通常会找到适用于symfony 1.2的示例,而我使用的是1.4.
谢谢,有一些例子很好.
lib / soap_payment.class.php
class SoapPayment
{
public function charge()
{
/*assume options are setup correctly for sake of example*/
try
{
$this->call();
}
catch (SoapPaymentClientFaultException $e)
{
/* should this be caught here? */
}
}
private function call()
{
$this->client->call($this->options);
if ($this->client->hasFault())
{
throw new SoapPaymentClientFaultException();
}
}
}
apps / frontend / payment / actions / actions.class.php
class paymentActions extends sfActions
{
public function executeCreate(sfWebRequest $request)
{
/* check form is valid etc */
$soap_payment = new SoapPayment();
try
{
$soap_payment->charge();
}
catch (SoapPaymentClientFaultException $e)
{
/* or throw/catch here? */
$this->getUser()->setFlash('error', ...);
$this->getLogger()->err(...);
}
/* save form regardless, will set a flag to check if successful or not in try/catch block */
}
}
解决方法:
Symfony的一个不太广为人知的功能是,异常可以管理响应中发送的内容.因此,您可以执行以下操作:
class SoapException extends sfException
{
public function printStackTrace() //called by sfFrontWebController when an sfException is thrown
{
$response = sfContext::getInstance()->getResponse();
if (null === $response)
{
$response = new sfWebResponse(sfContext::getInstance()->getEventDispatcher());
sfContext::getInstance()->setResponse($response);
}
$response->setStatusCode(5xx);
$response->setContent('oh noes'); //probably you want a whole template here that prints the message that was a part of the SoapException
}
}
如果您需要对SOAP异常进行更干净的处理(例如设置闪存等),则可能必须捕获每个异常.这里的一个想法可能是创建一个通用的SoapException类,该类由更具体的SoapExceptions扩展,因此您不必捕获许多其他类型.上面的代码也可能是有用的回退机制.
最后,是的,您应该将自定义异常放在lib / exception中.
内容总结
以上是互联网集市为您收集整理的php symfony异常处理/错误处理全部内容,希望文章能够帮你解决php symfony异常处理/错误处理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。