NuSOAP kullanan bir symfony uygulama üzerinde çalışıyorum (bu php / symfony ile sabun çalışmalarını entegre etmek için en iyi yöntem nedir?) Kredi kartı ödemeleri almak için.
Aşağıda benim kod bir örnek Basitleştirilmiş.
Ne ile mücadele ediyorum istisnalar işlemek için en iyi yoldur. Aşağıdaki örnek sadece 1 özel istisna (nerede benim özel istisnalar symfony dizin yapısı içinde bulunmalıdır? (Lib / istisna?)) Sahiptir Ama belirli bir hata işlemek istisnalar birkaç farklı türleri vardır ne olur? Bu 20 küsur istisnalarla bir try / catch bloğu olması çok zarif değil.
Ben de atma ve alıcı olmalıdır nerede emin değilim. Ben herhangi bir sorun kullanıcıyı uyarmak için bazı kullanıcı yanıp ayarlamanız gerekir, bu yüzden alıcı yerine sabun çağrıyı kolları sınıf içinde daha eylemler denetleyicisi yapılmalıdır rakam.
Ben yanlış gidiyor nerede olabileceğini herkes tavsiye eder misiniz?
Ben Dağınık kodu / çözümler nefret ve mümkün olduğunca DRY ilkesine sadık istiyorum. Ben de bu konuda yardımcı olabilir ama ben genelde symfony 1.2 içindir örnekler bulmak arama yaptığında, ben 1.4 kullanıyorum symfony işlevselliği yerleşik bazı eksik olabileceğini düşünüyorum.
Bazı örnekler harika olur, teşekkürler.
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 / ödeme / eylemler / 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 */
}
}