在使用nusoap的symfony應用程序(這是整合肥皂工作與php/symfony的最佳方法?)之間進行信用卡付款的工作。php symfony異常處理/錯誤處理
我簡化了下面我的代碼示例。
我正在努力的是處理異常的最佳方式。下面的例子只有一個自定義異常(我的自定義異常應該在symfony的目錄結構中(lib/exception?))應該如何處理?但是當有幾種不同類型的異常處理特定錯誤時會發生什麼?擁有20個奇數例外的try/catch塊並不是很優雅。
我也不確定我應該在哪裏投擲和捕捉。我需要設置一些用戶閃爍來提醒用戶任何問題,所以我認爲捕捉應該在動作控制器中完成,而不是在處理肥皂呼叫的類中完成。
任何人都可以請告訴我哪裏可能會出錯?
我討厭凌亂的代碼/解決方案,並希望儘可能堅持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();
}
}
}
應用/前端/支付/動作/的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 */
}
}
我沒有看到'lib/exception'目錄。但是,我看到一個'lib/vendor/symfony/lib/exception'目錄;這是你的意思嗎? – rlandster 2011-02-24 17:42:15
@rlandster只需創建一個lib/exception'目錄。 'lib/vendor /'用於第三方庫,不應該修改。 – takteek 2011-03-05 01:10:29