Travailler sur une application symfony utilisant nusoap (est-ce la meilleure méthode pour intégrer le travail du savon avec php/symfony?) Pour accepter les paiements par carte de crédit.php symfony gestion des exceptions/erreurs
J'ai simplifié un exemple de mon code ci-dessous.
Ce que je suis aux prises avec est la meilleure façon de gérer les exceptions. L'exemple ci-dessous ne comporte qu'une seule exception personnalisée (où mes exceptions personnalisées doivent-elles résider dans la structure de symfony?) (Lib/exception?)) Mais que se passe-t-il lorsque plusieurs types d'exceptions gèrent une erreur spécifique? Ce n'est pas très élégant d'avoir un bloc try/catch avec 20 exceptions impaires.
Je ne suis pas sûr non plus d'où je devrais lancer et attraper. J'ai besoin de définir des flashs d'utilisateurs pour alerter l'utilisateur de tout problème, donc je pense que l'attrape devrait être fait dans le contrôleur d'actions plutôt que dans la classe qui gère l'appel de savon.
Quelqu'un peut-il s'il vous plaît aviser où je pourrais me tromper?
Je déteste le code/les solutions désordonnés et je veux m'en tenir au principe DRY autant que possible. Je pense que je pourrais aussi manquer certaines fonctionnalités intégrées de symfony qui pourraient aider avec cela mais chaque fois que je cherche, je trouve généralement des exemples qui sont pour symfony 1.2, j'utilise 1.4.
Quelques exemples seraient grands, merci.
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/paiement/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 */
}
}
Je ne vois pas de répertoire 'lib/exception'. Cependant, je vois un répertoire 'lib/vendor/symfony/lib/exception'; est-ce le répertoire que vous voulez dire? – rlandster
@rlandster Créez simplement un répertoire 'lib/exception'. 'lib/vendor /' est pour les bibliothèques tierces et ne devrait pas être modifié. – takteek